【发布时间】:2011-08-27 03:21:16
【问题描述】:
我和before. 有同样的问题,我仍在使用相同的示例。
DataTable table = new DataTable();
table.Columns.Add("column1", typeof(int));
table.Columns.Add("column2", typeof(int));
table.Columns.Add("column3", typeof(string));
table.Rows.Add(1, 0, "a");
table.Rows.Add(2, 1, "b");
table.Rows.Add(3, 1, "c");
table.Rows.Add(4, 3, "d");
table.Rows.Add(5, 3, "e");
我这样做是为了返回 column3 的值,其在 column1 中的值也出现在 column2 中:
var x = (from t1 in table.AsEnumerable()
select t1.Field<int>(0)).Intersect
((from t2 in table.AsEnumerable()
select t2.Field<int>(1)).Distinct());
如何根据上面的 LINQ 获取 column3 的值?
我可以使用接受的答案here:
var result = (from t1 in table.AsEnumerable()
join t2 in table.AsEnumerable() on t1.Field<int>(0) equals t2.Field<int>(1)
虽然我认为我不能在第一个 LINQ 的对面使用它,它可以翻译为'返回 column3 的值,其值在 column1 不 出现在第 2 列中。但是,我可以将上面的 LINQ 更改为 Except(),而不是 Intersect()。我只需要知道如何使用 var x 来获取 Rows 的集合或仅获取 column3 的值。
【问题讨论】:
-
你为什么还要使用
DataTable?强类型集合通常要好得多。