C#中應用Lambda表達式自界說比擬器完成兩個列表歸並實例。本站提示廣大學習愛好者:(C#中應用Lambda表達式自界說比擬器完成兩個列表歸並實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中應用Lambda表達式自界說比擬器完成兩個列表歸並實例正文
一次項目有如許的需求,當地存儲了json數據,可以轉化為對應的List列表,如今須要更新,從辦事器那邊獲得最新的數據更改。總的來講就是當地有個List表,假如數據須要更新,則會向辦事器發送要求來獲得須要更改的部門List表格,然後客戶端這邊就要行止理歸並完全此次的更新,弄了一個下晝,終究弄定,此次來mark一下。
重要推送的數據的兩個特征:
1.假如之前的列表須要增長,則湧現在最新的數據推送List中
2.假如數據須要修正的話,則一樣推送更新,堅持id不變,內容有所轉變
示例代碼以下圖:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test
{
public class date
{
public int id { set; get; }
public string color { set; get; }
public string name { set; get; }
public decimal price { set; get; }
public string time { get; set; }
}
class MyComparer : IEqualityComparer<date>
{
public bool Equals(date x, date y)
{
return x.id == y.id;
}
public int GetHashCode(date obj)
{
return obj.id.GetHashCode();
}
}
class Program
{
static void Main(string[] args)
{
List<date> list1 = new List<date>()
{
new date() { id = 1, color = "1", name = "name1", price = 1,time="時光" },
new date() { id = 2, color = "2", name = "name2", price = 2,time="時光" },
new date() { id = 3, color = "3", name = "name3", price = 3,time="時光" },
new date() { id = 5, color = "5", name = "name5", price = 5,time="時光" },
new date() { id = 6, color = "6", name = "name8", price = 8,time="時光" }
};
List<date> list2 = new List<date>()
{
new date() { id = 1, color = "修正", name = "修正", price = 2,time="時光" },
new date() { id = 8, color = "增長", name = "增長", price = 2,time="時光" }
};
var result = list2.Union(list1, new MyComparer());
foreach (var item in result)
{
Console.WriteLine("id = {0}, card = {1}, name = {2}, price = {3}", item.id, item.color, item.name, item.price,item.time);
}
}
}
}
測試的成果為:
從成果看出,id=1的數據須要修正,所以最重生成的List表中id為1的一切屬性都是更改後的成果,而在list1中沒有id為8的數據,解釋這個是須要新促進去的一筆記錄,是以在最新的List也有了,此次重要用到自界說的比擬器,去完成IEqualityComparer<>這個接口。別的還用到了Lambda表達式
var result = list2.Union(list1, new MyComparer());特殊是Union這個辦法的應用,該辦法還有許多種用法,這裡就舉個例子罷了啦。