我有一个DataTable
约30列,它可以非常大,一个被称为id。c#比较两个列表/表
在其他列表中,我有4列。我正在考虑把它放在DataTable
,但我不确定什么是最好的。
name, id2, month, week
我想知道在哪里id == id2
和month
在那个id2
什么。
id
和id2
都是strings
不是数字。
任何人都有一个好主意,如何做到这一点最好/最快的方式?
我有一个DataTable
约30列,它可以非常大,一个被称为id。c#比较两个列表/表
在其他列表中,我有4列。我正在考虑把它放在DataTable
,但我不确定什么是最好的。
name, id2, month, week
我想知道在哪里id == id2
和month
在那个id2
什么。
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
是an efficient way to link,因为它使用引擎盖下的一套。
现在,您可以执行此查询,例如使用foreach
循环或使用ToList/ToArray
创建集合。
如果我在DataTable中还有第二个列表,这也可能吗? – Akjell 2015-03-31 09:34:28
@Akjell:当然你可以把你列表中的所有对象添加到一个'DataTable'中。那么你也可以加入这两个表,如果这是你想要的。但你并不需要它。一个'DataTable'是弱类型的,而'List
解决方案,而不LINQ:
环路穿过较小列表(或者在列表与id
或id2
列表)
对于每个列表项,搜索如果在其他列表中存在的id。
正如你看到的,有一个快速的搜索是很重要的(无论是部分索引或O(log n)的搜索算法)
使用'Linq'在'id'列上加入这两个表,并在你试过的任何地方得到'month' – 2015-03-31 09:03:42
Post。 – 2015-03-31 09:04:22
_“在其他列表中,我有4列”_什么样的列表,什么样的班级,你可以展示它,以及你已经尝试过什么? – 2015-03-31 09:11:35