我有一个datatable
,其中一列是id1
,还有一个整数元组列表List<Tuple<int,int>>
。
datatable
列id1
可以为特定名称提供多个值。元组列表实际上是一个引用列表,其中包含id1
的所有ID tuple.Item1
和id2
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
吗?
答案 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();