C 合併兩個不同型別集合資料

2022-02-14 23:29:42 字數 2048 閱讀 3819

2019-09-30 10:28:46 dear200892 閱讀數 9 文章標籤: c#

lambda

合併不同型別集合資料 更多

分類專欄: c#

別名:使用lambda表示式來實現left join

先把兩個不同的類資料擺上。

public class user////// 區域編號

///

public int area_id

///

/// 使用者名稱

///

public string user_name

}

public class area

///

/// 區域名

///

public string area_name

}

listuserlist = new list();userlist.add(new user );userlist.add(new user );userlist.add(new user );

userlist.add(new user );

listarealist = new list();

arealist.add(new area );

arealist.add(new area );

arealist.add(new area );

arealist.add(new area );

arealist.add(new area );

arealist.add(new area );

兩個集合型別的資料都已新增完畢,現在我想實現乙個這樣的功能 :

我想查詢每個使用者所對應的的城市名

要想使用lambda來解決這個問題,就需要使用到groupjoin

groupjoin可以將兩個不同型別的資料進行關聯,同時分組,類似於sql中的外連線。

var resultlist = userlist.groupjoin(arealist, u => u.area_id, a => a.area_id, (u, a) => new ).select(o => o).tolist();因為上面有個使用者的area_id=9,在集合中並沒有出現這個城市,所以需要判斷是否為空,不然會出現異常。

如果你不想篩選列,那就可以改成(u,a) => new 。

外連線現在我想查詢有對應城市的使用者,也就是趙四不出現結果中。

那就需要將groupjoin改為join!

join可以將兩個不同型別的資料進行關聯,不分組,類似於sql中的內連線。

var result = userlist.join(arealist, u => u.area_id, a => a.area_id, (u, a) => new ).select(o => o).tolist();t同樣你不想篩選列,那就可以改成(u,a) => new 。 

如何對兩個不同型別的集合進行排序

今天寫 遇到乙個問題,對兩個兩個不同型別的集合進行排序,上網找了一下方法,然後試驗了一下,用隨筆記錄一下整個過程 對集合進行排序,自然而然就想到了集合的排序方法sort 於是開啟反編譯器找到這個方法 以list為例 如下圖 可以看到呼叫的是list類的sort int index,int count...

C 合併兩個(多個)集合

合併兩個集合 使用語言 c 環境 net core 2.0 當前使用 支援 net 所有環境,我就不多說了 核心 listlistmerge1 list1.union list2 tolist 不允許有重複項 listmerge1 結果 listlistmerge2 list1.concat lis...

C 模板實現兩個不同型別的資料相加函式

1 最簡單的情況 templatet add const t a,const t b 缺點是不能夠處理不同型別的資料,例如add 100,100.0f 2 第二種情況 templatet1 add1 t1 lhs,t2 rhs 這種情況下,能夠處理不同型別的資料,但是有些情況下有些資料精度會丟失,例...