比較兩個List物件,找出新增、刪除、更改的條目
需求說明
我們在開發過程中,經常需要對比兩個List物件的資料,找出新增、刪除、更改的條目。典型的情況如需要根據前端給出的請求列表,與後臺表中當前具有的記錄做比較,然後對後臺表做增、刪、改的操作。為此,以下舉例總結List物件的比對方法。
新建一個控制檯程式
新建一個控制檯程式作為例子。
定義一個記錄資料條目的類
public class Class1
{
public string Id { get; set; }
public string Res { get; set; }
}
構建兩個List物件
List<Class1> listA = new List<Class1>
{
new Class1 { Id = "1001", Res = "A1" },
new Class1 {Id = "1002", Res = "A2" },
new Class1 {Id = "1003", Res = "A3" }
};
List<Class1> listB = new List<Class1>
{
new Class1 { Id = "1001", Res = "B1" },
new Class1 {Id = "1002", Res = "B2" },
new Class1 {Id = "1004", Res = "B3" },
new Class1 {Id = "1005", Res = "B4" },
};
兩個List物件條目做比對
// 從listB中找出相對listA新增的
var queryInsert = listB.Where(b =>
{
if (!listA.Any(a => a.Id == b.Id)) return true;
return false;
}).ToList();
queryInsert.ForEach(q =>
{
WriteLine("新增項:" + q.Id + ", " + q.Res);
});
WriteLine();
// 從listA中找出相對listB刪除的
var queryDelete = listA.Where(a =>
{
if (listB.All(b => b.Id !=a.Id)) return true;
return false;
}).ToList();
queryDelete.ForEach(q =>
{
WriteLine("刪除項:" + q.Id + ", " + q.Res);
});
WriteLine();
// 從listB中找出相對listA更新的
var queryUpdate = listB.Where(b =>
{
if (listA.Any(a => a.Id == b.Id)) return true;
return false;
}).ToList();
queryUpdate.ForEach(q =>
{
WriteLine("更新項:" + q.Id + ", " + q.Res);
});
輸出結果
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2668639/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TC中如何新增物件及比較物件物件
- Js 比較兩個物件的鍵名與鍵值是否相等JS物件
- 兩個目錄中,刪除其中一個目錄中同名檔案的做法
- Java 兩個日期比較Java
- 比較兩個物件是否相同,輸出不同的屬性值(一)物件
- data (){..} 返回一個物件或者不返回物件,兩種寫法的差異比較物件
- 【探索】兩種查詢和刪除重複記錄的方法及其效能比較
- js為物件新增和刪除屬性JS物件
- JavaScript比較兩個時間JavaScript
- [java之list比較]Java
- 請給Array本地物件增加一個原型方法,它用於刪除陣列條目中重複的條目(可能有多個),返回值是一個包含被刪除的重複條目的新陣列。...物件原型陣列
- PHP物件的比較PHP物件
- 比較兩個陣列是否相等陣列
- JavaScript比較兩個時間大小JavaScript
- shell比較兩個字串是否相等字串
- mysql比較兩個日期間隔MySql
- javascript比較兩個時間日期的大小JavaScript
- 比較兩個資料庫的差異資料庫
- 比較兩個的表結構差異
- 比較兩個表的資料差別
- 兩種找出SAP UI Code List配置位置的小技巧UI
- Python的List vs Tuple比較Python
- 通過Guava實現兩個包含不同物件的List合併成一個ListGuava物件
- javascript如何動態刪除或者新增物件屬性JavaScript物件
- 比較輸入兩個版本號大小
- C#比較兩個字串的相似度【轉】C#字串
- Java中List集合效能比較Java
- Cookie 的新增與刪除Cookie
- Vue 不能檢測到物件屬性的新增或刪除,注意!!!Vue物件
- python如何比較兩個字串是否相等Python字串
- rsync同步時,刪除目標目錄比源目錄多餘檔案的方法(--delete)delete
- Java Optional的orElse()與orElseGet()兩個方法比較 - BaeldungJava
- 用VBS比較兩個Excel檔案的資料Excel
- java中兩個物件間的屬性值複製,比較,轉為map方法實現Java物件
- informix新增刪除chunkORM
- class屬性的新增刪除
- 陣列的方法-新增刪除陣列
- jquery table 的新增和刪除jQuery