LINQ查询根据不同的列获取所有数据行

时间:2017-02-01 23:23:58

标签: c# vb.net linq linq-to-dataset

VB.Net 中,我有LINQ查询

Dim temp = (From r In datatable Select r Order By r.str Descending)

但我希望它基于str列是唯一的。我知道如何从LINQ中获取str column并将其标记为distinct。但是我想要整行(所有列)并且基于str

具有不同的行

类似

 Dim temp = (From r In datatable Select r Order By r.str Descending).distinct(r.str)

如果有人能用C#给我答案,我会在VB.Net中翻译它

样品

数据表

col1 col2 str
A    B     X
A1   B1    Y
A2   B2    X

输出应该是

col1 col2 str
A     B    X
A1    B1   Y

2 个答案:

答案 0 :(得分:0)

如果您只想从具有相同str字段值的行中选择第一行:

from r in datatable.AsEnumerable()
group r by r.Field<string>("str") into g
orderby g.Key descending
select g.First()

或方法语法

datatable.AsEnumerable()
         .GroupBy(r => r.Field<string>("str"))
         .OrderByDescending(g => g.Key)
         .Select(g => g.First())

答案 1 :(得分:0)

首先按要分隔的列进行分组,然后选择每个组的第一个。这将为您提供指定字段中每个不同值的所有列。

dim results = myDataContext.myTable.GroupBy(Function(f) f.myDistinctField).Select(Function(j) j.FirstOrDefault())