在 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
答案 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())