2017-02-01 92 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