2013-01-07 49 views
1

我可以得到它返回單列,但我似乎無法弄清楚如何讓它給我整行而不是隻列值。從數據表中選擇整個重複行LINQ C#

幫助!!

它應該返回的字段是VDMList和Table。

var duplicates = dt.AsEnumerable() 
    .Select(dr => dr.Field<string>("VMDList")) 
    .GroupBy(x => x) 
    .Where(g => g.Count() > 1) 
    .Select(g => g.Key) 
    .ToList(); 


columns of DT Table, VDMList 
output is 
4 | 02,2 
12 | 03,3 
15 | 02,2 
+0

CAU你顯示輸出? – Tilak

+0

你也可以向我們展示表格結構嗎? – IronMan84

+0

整行 - >在什麼標準下,有些值會丟失 – Tilak

回答

2

以下查詢將返回first項目group的行重複VMDList。請注意,沒有選擇first項目的條件。它可以是任何random行。

var duplicates = dt.AsEnumerable() 
    .GroupBy(dr => dr.Field<string>("VMDList")) 
    .Where(g => g.Count() > 1) 
    .Select(g => g.First()) 
    .ToList(); 

要返回有重複的所有行,使用SelectMany

+0

我希望它返回所有具有重複的行,而不僅僅是第一個。 – Nebseb

+0

您需要使用[SelectMany](http://msdn.microsoft.com/zh-cn/library/system.linq.enumerable.selectmany.aspx)。更新了答案 – Tilak

+0

這對我有效,感謝您的幫助!!!!! – Nebseb

-1

如果要求是選擇整個行而不是選擇一列,然後修改LINQ如下:

var duplicates = dt.AsEnumerable() 
.Select(dr => dr.Field<string>("VMDList")) 
.GroupBy(x => x) 
.Where(g => g.Count() > 1) 
.Select(g); 

當重複將是一個組集合。

+0

我試過這個,它說g在當前上下文中不存在..... – Nebseb