2016-09-02 67 views
0

我想在我的應用程序中使用LINQ。這是我所使用的代碼:如何區分數據錶行?

dataTable1.Rows.Cast<DataRow>().GroupBy(
        x => x.Field<string>("item")).Where(
       g => g.Count() > 1).Skip(1).SelectMany(g => g).ToList<DataRow>().ForEach(r => r.Delete()); 

這個代碼理應不同的數據表的行,像distinctBy更LINQ庫()方法。但它只是與我的項目混淆了。我真的不知道它有什麼問題。我需要的是刪除具有相同列值的行。

什麼問題?我應該如何解決這個問題?

+0

你要記住了每個LINQ方法返回,'GroupBy'返回的項目組,所以'跳過(1)'跳過第一組。 –

回答

3

您的Skip正在跳過第一組,而不是每組中的第一項。取而代之的

.Skip(1).SelectMany(g => g) 

嘗試

.SelectMany(g => g.Skip(1)) 
+0

謝謝,我現在就去試試。 – user6787358

+1

是的,它運作良好。非常感謝你。 – user6787358