2017-02-01 65 views
0

数据行。在VB.Net我有以下LINQ查询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 

outpu T应当

col1 col2 str 
A  B X 
A1 B1 Y 
+0

我想你想使用的GroupBy:。VAR的结果= datatable.AsEnumerable()的GroupBy(X => x.Field ( “STR”))ToList(); – jdweng

回答

0

如果你想从同一个str字段值的行只选择第一行:按您需要的列

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

我想要所有具有独特'str'值的行 – Unbreakable

+0

我已经编辑了相应的问题。对不起,如果我没有正确地问第一个问题 – Unbreakable

+0

是的,这个查询给出了你想要的 –

0

第一组

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

或方法的语法要区分,然后选择每个组的第一个。这将为您提供指定字段中每个不同值的所有列。

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

我已经添加了我想要实现的示例输出。 – Unbreakable