DataTable與List之間的交集、差集
阿新 • • 發佈:2019-02-04
C# 專案中經常遇到這樣的情況:選定的項與原DataTable中的資料進行對比,將資料變動部分利用Adapter寫入資料庫。
對於同一型別的而言很容易實現,而對於不同型別而言則看似複雜,實則也很簡單
以下是取交集程式碼:
public partial class Program { static void Main(string[] args) { List<Class> list = new List<Class>(); list.Add(new Class() { Id = 1, Caption = "a" }); list.Add(new Class() { Id = 2, Caption = "b" }); list.Add(new Class() { Id = 3, Caption = "c" }); list.Add(new Class() { Id = 5, Caption = "d" }); list.Add(new Class() { Id = 6, Caption = "e" }); DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Text", typeof(string)); dt.Rows.Add(1, "第一行"); dt.Rows.Add(2, "第二行"); dt.Rows.Add(3, "第三行"); dt.Rows.Add(4, "第四行"); var row = dt.AsEnumerable().Where(x => { return (from a in list where a.Id == x.Field<int>("Id") select a).Any(); }); row.ToList().ForEach(x => { Console.WriteLine(x.Field<string>("Text")); }); Console.ReadKey(); } } public class Class { public Class() { } public int Id { get; set; } = 0; public string Caption { get; set; } = ""; }
執行結果
return !(from a in list where a.Id == x.Field<int>("Id") select a).Any();