c#比较两个列表/表

时间:2015-03-31 09:02:03

标签: c#

我有一个DataTable,大约有30列,它可能非常大,一个叫做id。

在另一个列表中,我有4列。我想把它放在DataTable但是我不确定什么是最好的。

name, id2, month, week

我想知道id == id2的位置 以及month的{​​{1}}是什么。

id2id id2都不是数字。

任何人都知道如何以最好/最快的方式做到这一点?

2 个答案:

答案 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.Joinan efficient way to link,因为它正在使用一套装置。

现在您可以执行此查询,例如使用foreach循环或使用ToList/ToArray来创建集合。