是否有一种简单的方法可以使用联合密钥加入两个IList

时间:2017-12-27 06:59:20

标签: c# linq

我希望通过其中列出的唯一标识符键加入两个IList<int[]>,并将它们连接成一个新标识符。当我们JOIN SQL服务器中的两个表时,它完全相同,但想知道是否可以在c#中轻松完成它?

代码与此类似:

int[] a1 = {1,10}; int[] a2 = {2,20}; int[] a3 = {3,30};
int[] b1 = {1,-1}; int[] b2 = {2,-2}; int[] b3 = {3,-3};

IList<int[]> List1 = new List<int[]>();
IList<int[]> List2 = new List<int[]>();

List1.Add(a1);List1.Add(a2);List1.Add(a3);
List2.Add(b1);List2.Add(b2);List2.Add(b3);

IList<int[]> ListFinal = new List<int[]>();
// I want to the ListFinal be <{1,10,-1},{2,20,-2},{3,30,-3}>

1 个答案:

答案 0 :(得分:4)

using System.Linq;

var ListFinal = List1.Join(List2,
        (inner) => inner[0], // return key of each item in list1
        (outer) => outer[0], // return key of each item in list2 to be matched
        (inner,outer) => new[]{ inner[0],inner[1],outer[1] }
    ).ToList();

此函数还将内外连接作为其参数名称。某些项目可能会丢失,因为它无法找到它的对