LINQ 查询以获取基于不同列的所有数据行
LINQ query to get the all the datarows based on a distinct column
在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
如果您只想 select 具有相同 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())
首先按要区分的列分组,然后 select 每组中的第一个。这将为您提供指定字段中每个不同值的所有列。
dim results = myDataContext.myTable.GroupBy(Function(f) f.myDistinctField).Select(Function(j) j.FirstOrDefault())
在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
如果您只想 select 具有相同 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())
首先按要区分的列分组,然后 select 每组中的第一个。这将为您提供指定字段中每个不同值的所有列。
dim results = myDataContext.myTable.GroupBy(Function(f) f.myDistinctField).Select(Function(j) j.FirstOrDefault())