比較兩個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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 找出倆個字串的相同並刪除字串
- 不用做任何比較判斷運算子找出兩個整數中的較大的值
- Js 比較兩個物件的鍵名與鍵值是否相等JS物件
- data (){..} 返回一個物件或者不返回物件,兩種寫法的差異比較物件
- 比較兩個物件是否相同,輸出不同的屬性值(一)物件
- 請給Array本地物件增加一個原型方法,它用於刪除陣列條目中重複的條目(可能有多個),返回值是一個包含被刪除的重複條目的新陣列。...物件原型陣列
- 比較兩個table是否相同
- JavaScript比較兩個時間JavaScript
- Python的List vs Tuple比較Python
- pandas比較兩個文件的差異
- Javers 比較兩個類的差異
- 關於Arrays.asList返回List無法新增和刪除?
- 比較兩個陣列是否相等陣列
- 兩種找出SAP UI Code List配置位置的小技巧UI
- 通過Guava實現兩個包含不同物件的List合併成一個ListGuava物件
- Vue 不能檢測到物件屬性的新增或刪除,注意!!!Vue物件
- matlab比較兩個矩陣是否相等Matlab矩陣
- python如何比較兩個字串是否相等Python字串
- Java中List集合效能比較Java
- C#比較兩個字串的相似度【轉】C#字串
- 使用 BenchmarkDotNet 比較指定容量的 List 的效能
- 陣列的方法-新增刪除陣列
- class屬性的新增刪除
- linux刪除資料夾命令是什麼 linux刪除一個目錄的命令Linux
- 新增、刪除PPA源
- Java Optional的orElse()與orElseGet()兩個方法比較 - BaeldungJava
- 比較兩個陣列中是否有相同的元素陣列
- C++ - 比較兩個浮點數大小C++
- gdb 除錯 new 一個物件主要兩個 handler除錯物件
- HashSet與HashMap比較——新增物件已存在處理方式一樣?HashMap物件
- c# 刪除某個資料夾下所有空目錄,解決因刪除空目錄後上一組成空目錄沒有刪除的情況C#
- js物件陣列Date的比較JS物件陣列
- list中for迴圈刪除多個元素為何報錯?
- js物件如何深比較?JS物件
- 比較兩個檔案,求出不同的內容,A-B
- 如何比較兩個資料庫表結構的不同資料庫
- 同一張表的兩個欄位比較查詢
- 主鍵的建立、新增、刪除操作