c#比较两个列表/表格



我有一个DataTable,大约有30列,它可能非常大,其中一列被称为id。

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

name, id2, month, week

我想知道id == id2在哪里以及CCD_ 4在该CCD_。

idid2都是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)搜索算法)

非常重要

最新更新