使用Linq和C#从DataTable中选择Distinct
本文关键字:选择 Distinct DataTable Linq 使用 | 更新日期: 2023-09-27 18:20:10
我需要使用linq和C#从数据表中选择不同的记录,但我似乎无法获得正确的语法。我有下面的代码,它返回数据表中的所有行,如何只返回DISTINCT行?
DataTable dt = ds.Tables[0];
var q = from dr in dt.AsEnumerable() select dr;
您需要使用DataRowComparer
IEnumerable<DataRow> distinctRows =
dt.AsEnumerable().Distinct(DataRowComparer.Default);
有关使用linq将数据行与数据集进行比较的更多信息,请访问
我们可以有:
var q = (from dr in dt.AsEnumerable() select dr).Distinct(DataRowComparer.Default);
但实际上,from x in ... select x
是多余的,所以我们可以有:
var q = dt.AsEnumerable().Distinct(DataRowComparer.Default);
但所有的AsEnumerable()
在大多数时候都会起作用,要么什么都不做(如果它已经是这样的话),要么可能会减慢速度(如果不同的东西可以在其他地方更好地处理),所以通常最好这样做:
var q = dt.Distinct(DataRowComparer.Default);
尽管在某些情况下前者胜过后者。
(from dr in dt.AsEnumerable() select dr).Distinct();