比较C#

时间:2017-11-10 16:09:27

标签: c# list linq tuples

我有一个datatable,其中一列是id1,还有一个整数元组列表List<Tuple<int,int>>

datatableid1可以为特定名称提供多个值。元组列表实际上是一个引用列表,其中包含id1的所有ID tuple.Item1id2 tuple.Item2。我想将id1的{​​{1}}的所有值与元组列表的datatable进行比较,并且只从元组列表中获取所有相应的id1

首先,一种方法是将所有id2从数据表中放入一个列表,然后与元组列表进行比较,如

id1

现在将此var listOfid1 = datatable.AsEnumerable() .Where(x => x.field<int>("id1")) .ToList(); 与元组列表进行比较,得到所有相应的listOfid1 w.r.t id2

有人可以帮助我一步完成这项工作,即将数据表的id1的所有id1与元组的id1进行比较,并获取列表中的所有id2吗?

1 个答案:

答案 0 :(得分:1)

您可以使用LINQ&#39; s JOIN

var id2Items = from row in datatable.AsEnumerable()
               join t in yourTupleList
               on row.Field<int>("id1") equals t.Item1
               select t.Item2;
List<int> id2List = id2Items.ToList();

请求的方法语法:

List<int> id2List = table.AsEnumerable()
  .Join(yourTupleList, row => row.Field<int>("id1"), t => t.Item1, (r, t) => t.Item2)
  .ToList();

Where(效率较低)但可能更好阅读:

List<int> id1List = table.AsEnumerable().Select(row => row.Field<int>("id1")).ToList();
List<int> id2List = yourTupleList
  .Where(t => id1List.Contains(t.Item1))
  .Select(t => t.Item2) 
  .ToList();