程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中應用Lambda表達式自界說比擬器完成兩個列表歸並實例

C#中應用Lambda表達式自界說比擬器完成兩個列表歸並實例

編輯:C#入門知識

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這個辦法的應用,該辦法還有許多種用法,這裡就舉個例子罷了啦。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved