中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

C#中如何使用Join與GroupJoin將兩個集合進行關(guān)聯(lián)與分組-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“C#中如何使用Join與GroupJoin將兩個集合進行關(guān)聯(lián)與分組”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C#中如何使用Join與GroupJoin將兩個集合進行關(guān)聯(lián)與分組”這篇文章吧。

臨西ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

對于Join的用法說明如下:

語法:

public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
 this IEnumerable<TOuter> outer,
 IEnumerable<TInner> inner,
 Func<TOuter,?TKey> outerKeySelector,
 Func<TInner,?TKey> innerKeySelector,
 Func<TOuter,?TInner,?TResult> resultSelector
)

參數(shù)說明:

outer
Type: System.Collections.Generic.IEnumerable<TOuter>
要聯(lián)接的第一個序列。
inner
Type: System.Collections.Generic.IEnumerable<TInner>
要與第一個序列聯(lián)接的序列。
outerKeySelector
Type: System.Func<TOuter,?TKey>
用于從第一個序列的每個元素提取聯(lián)接鍵的函數(shù)。
innerKeySelector
Type: System.Func<TInner,?TKey>
用于從第二個序列的每個元素提取聯(lián)接鍵的函數(shù)。
resultSelector
Type: System.Func<TOuter,?TInner,?TResult>
用于從兩個匹配元素創(chuàng)建結(jié)果元素的函數(shù)。
返回值
Type: System.Collections.Generic.IEnumerable<TResult>
IEnumerable<T> ,其類型的元素 TResult 通過對兩個序列執(zhí)行內(nèi)部聯(lián)接獲得的。

參數(shù)類型:

TOuter
第一個序列中的元素的類型。
TInner
第二個序列中的元素的類型。
TKey
鍵選擇器函數(shù)返回的鍵的類型。
TResult
結(jié)果元素的類型。

參考鏈接如下:

https://msdn.microsoft.com/zh-cn/library/bb534675.aspx
https://docs.microsoft.com/zh-cn/dotnet/api/system.linq.enumerable.join?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev15.query%3FappId%3DDev15IDEF1%26l%3DZH-CN%26k%3Dk(System.Linq.Enumerable.Join%60%604);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.0);k(DevLang-csharp)%26rd%3Dtrue&view=netframework-4.7.1

例程:

using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp33
{
 class Program
 {
 static void Main(string[] args)
 {
  GroupJoinEx();
 }
 static void GroupJoinEx()
 {
  Person p1 = new Person() { Name = "ABC", Age = 18 };
  Person p2 = new Person() { Name = "EFG", Age = 19 };
  Person p3 = new Person() { Name = "LMN", Age = 20 };
  Person p4 = new Person() { Name = "XYZ", Age = 21 };
  List<Person> pList = new List<Person> { p1, p2, p3, p4 };
  Department d1 = new Department() { Name = "A1", Employee = p1 };
  Department d2 = new Department() { Name = "A2", Employee = p2 };
  Department d3 = new Department() { Name = "A3", Employee = p1 };
  Department d4 = new Department() { Name = "B1", Employee = p3 };
  Department d5 = new Department() { Name = "B2", Employee = p4 };
  Department d6 = new Department() { Name = "B3", Employee = p4 };
  List<Department> dList = new List<Department> { d1, d2, d3, d4, d5, d6 };
  var result = pList.Join(dList,
  person => person,
  department => department.Employee,
  (person, department) => new
  {
   Person = person,
   Department = department
  });
  foreach(var item1 in result)
  {
  Console.Write($"Name:{item1.Person} & Department:{item1.Department} ");
  Console.WriteLine();
  }
 }
 }
 class Person
 {
 public string Name { set; get; }
 public int Age { set; get; }
 public override string ToString()
 {
  return $"{Name},{Age}";
 }
 }
 class Department
 {
 public string Name { set; get; }
 public Person Employee { set; get; }
 public override string ToString()
 {
  return $"{Name}";
 }
 }
}

輸出結(jié)果:

C#中如何使用Join與GroupJoin將兩個集合進行關(guān)聯(lián)與分組

對于GroupJoin的用法說明如下:

語法:

public static IEnumerable<TResult> GroupJoin<TOuter, TInner, TKey, TResult>(
 this IEnumerable<TOuter> outer,
 IEnumerable<TInner> inner,
 Func<TOuter,?TKey> outerKeySelector,
 Func<TInner,?TKey> innerKeySelector,
 Func<TOuter,?IEnumerable<TInner>,?TResult> resultSelector
)

參數(shù)說明:

outer
Type: System.Collections.Generic.IEnumerable<TOuter>

要聯(lián)接的第一個序列。

inner
Type: System.Collections.Generic.IEnumerable<TInner>

要與第一個序列聯(lián)接的序列。

outerKeySelector
Type: System.Func<TOuter,?TKey>

用于從第一個序列的每個元素提取聯(lián)接鍵的函數(shù)。

innerKeySelector
Type: System.Func<TInner,?TKey>

用于從第二個序列的每個元素提取聯(lián)接鍵的函數(shù)。

resultSelector
Type: System.Func<TOuter,?IEnumerable<TInner>,?TResult>

用于從第一個序列的元素和第二個序列的匹配元素集合中創(chuàng)建結(jié)果元素的函數(shù)。

返回值

Type: System.Collections.Generic.IEnumerable<TResult>
IEnumerable<T> ,其中包含類型的元素 TResult 通過對兩個序列執(zhí)行分組的聯(lián)接獲得的。

參數(shù)類型:

TOuter
第一個序列中的元素的類型。
TInner
第二個序列中的元素的類型。
TKey
鍵選擇器函數(shù)返回的鍵的類型。
TResult
結(jié)果元素的類型。

參考鏈接如下:

https://msdn.microsoft.com/zh-cn/library/bb534297.aspx
https://docs.microsoft.com/zh-cn/dotnet/api/system.linq.enumerable.groupjoin?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev15.query%3FappId%3DDev15IDEF1%26l%3DZH-CN%26k%3Dk(System.Linq.Enumerable.GroupJoin%60%604);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.0);k(DevLang-csharp)%26rd%3Dtrue&view=netframework-4.7.1

例程:

using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp33
{
 class Program
 {
 static void Main(string[] args)
 {
  GroupJoinEx();
 }
 static void GroupJoinEx()
 {
  Person p1 = new Person() { Name = "ABC", Age = 18 };
  Person p2 = new Person() { Name = "EFG", Age = 19 };
  Person p3 = new Person() { Name = "LMN", Age = 20 };
  Person p4 = new Person() { Name = "XYZ", Age = 21 };
  List<Person> pList = new List<Person> { p1, p2, p3, p4 };
  Department d1 = new Department() { Name = "A1", Employee = p1 };
  Department d2 = new Department() { Name = "A2", Employee = p2 };
  Department d3 = new Department() { Name = "A3", Employee = p1 };
  Department d4 = new Department() { Name = "B1", Employee = p3 };
  Department d5 = new Department() { Name = "B2", Employee = p4 };
  Department d6 = new Department() { Name = "B3", Employee = p4 };
  List<Department> dList = new List<Department> { d1, d2, d3, d4, d5, d6 };
  var result = pList.GroupJoin(dList,
  person => person,
  department => department.Employee,
  (person, departments) => new
  {
   Person = person,
   Department = departments.Select(d => d)
  });
  foreach(var item1 in result)
  {
  Console.Write($"Name:{item1.Person} & ");
  foreach(var item2 in item1.Department)
  {
   if(item1.Department.First() == item2)
   Console.Write($"Department:{item2} ");
   else
   Console.Write($"{item2} ");
  }
  Console.WriteLine();
  }
 }
 }
 class Person
 {
 public string Name { set; get; }
 public int Age { set; get; }
 public override string ToString()
 {
  return $"{Name},{Age}";
 }
 }
 class Department
 {
 public string Name { set; get; }
 public Person Employee { set; get; }
 public override string ToString()
 {
  return $"{Name}";
 }
 }
}

輸出結(jié)果:

C#中如何使用Join與GroupJoin將兩個集合進行關(guān)聯(lián)與分組

以上是“C#中如何使用Join與GroupJoin將兩個集合進行關(guān)聯(lián)與分組”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站制作公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享標(biāo)題:C#中如何使用Join與GroupJoin將兩個集合進行關(guān)聯(lián)與分組-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://www.rwnh.cn/article38/cchhsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站網(wǎng)站導(dǎo)航、網(wǎng)站排名企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計公司定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
新沂市| 乌海市| 榆树市| 通江县| 枣庄市| 普兰县| 普兰店市| 凤冈县| 松原市| 永定县| 彭阳县| 南雄市| 布尔津县| 洛扎县| 满洲里市| 屯昌县| 芒康县| 霸州市| 乡城县| 密云县| 三穗县| 洪雅县| 绍兴市| 新郑市| 万源市| 水城县| 贡山| 普安县| 西吉县| 娱乐| 旌德县| 聂拉木县| 涡阳县| 沙田区| 八宿县| 元江| 石门县| 含山县| 社旗县| 远安县| 镇沅|