我有一个DataTable
,大约有30列,它可能非常大,其中一列被称为id。
在另一个列表中,我有4列。我想把它放在DataTable
中,但我不确定什么是最好的。
name, id2, month, week
我想知道id == id2
在哪里以及CCD_ 4在该CCD_。
id
和id2
都是strings
而不是数字。
有人知道如何以最好/最快的方式做到这一点吗?
您可以使用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
是一种有效的链接方式,因为它使用了一个隐藏的集合。
现在,您可以执行这个查询,例如使用foreach
循环或使用ToList/ToArray
来创建集合。
没有LINQ的解决方案:
循环浏览较小的列表(带有id
的列表或带有id2
的列表)
对于每个列表项,搜索其他列表中是否存在id。
如您所见,快速搜索(某个索引或O(logn)搜索算法)