我試圖id從 DataTable 中獲取一行,我不在乎我選擇哪一行。id表中的幾行也可以存在相同的內容。
這是給我帶來麻煩的表達方式:
dt.AsEnumerable().GroupBy(i => i.Field<int>("id")).Select(i => i.First())
僅dt.AsEnumerable().GroupBy(i => i.Field<int>("id")正確運行此部分可為我的 DataTable 提供 22 個分組的結果。(我在這個表中有 22 個帶有資料的 id)
但是,在添加 時.Select(i => i.First()),我只看到 10 個資料行。
對我來說,這似乎沒有任何意義。如果該GroupBy函式設法找到 22 個不同的id值,我希望這個邏輯能夠獲取每個值。
我唯一的另一個想法是,通過 Visual Studio 中的手表查看這些資料而不是分配給變數可能只是一個奇怪的副作用。
uj5u.com熱心網友回復:
如果您認為在手表中查看資料只是奇怪的副作用,這可能發生在 LINQ 陳述句中,那么將其拆分為
var groups = dt.AsEnumerable().GroupBy(i => i.Field<int>("id")).ToList();
var firstOfGroups = groups.Select(i => i.First()).ToList();
然后在除錯器中查看groups和firstOfGroups。臨時評估專案對于.ToList()在除錯器中查看內容有很大幫助。
uj5u.com熱心網友回復:
我認為有可能,可以仔細檢查每個組專案的數量
.Select(g=>new { k = g.Key, c = g.Count() })
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/347610.html
