我有一个DataTable
,大约有30列,它可能非常大,一个叫做id。
在另一个列表中,我有4列。我想把它放在DataTable
但是我不确定什么是最好的。
name, id2, month, week
我想知道id == id2
的位置
以及month
的{{1}}是什么。
id2
和id
id2
都不是数字。
任何人都知道如何以最好/最快的方式做到这一点?
答案 0 :(得分:1)
没有LINQ的解决方案:
循环显示较小的列表(包含id
的列表或包含id2
的列表)
对于每个列表项,搜索另一个列表中是否存在id。
如您所见,快速搜索(某些索引或O(log n)搜索算法)非常重要
答案 1 :(得分:1)
您可以使用LINQ加入两个集合:
var query = from row in dataTable.AsEnumerable()
join obj in list
on row.Field<string>("id") equals obj.id2
select obj.month;
Enumerable.Join
是an efficient way to link,因为它正在使用一套装置。
现在您可以执行此查询,例如使用foreach
循环或使用ToList/ToArray
来创建集合。