1

単一の列を返すようにすることはできますが、列の値だけでなく行全体を取得する方法がわかりません。

ヘルプ!!

返されるフィールドは、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
4

2 に答える 2

3

次のクエリは、重複する行firstのアイテムを返します。アイテムを選択するための基準はありません。任意の行にすることができます。groupVMDListfirstrandom

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

重複のあるすべての行を返すには、SelectManyを使用します。

var allDuplicates = dt.AsEnumerable()
    .GroupBy(dr => dr.Field<string>("VMDList"))
    .Where(g => g.Count() > 1)
    .SelectMany(g => g)
    .ToList();
于 2013-01-07T04:01:42.837 に答える
-1

要件が列を選択するのではなく行全体を選択することである場合は、次のようにlinqを変更します。

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

重複する場所はグループコレクションです。

于 2013-01-07T03:56:24.010 に答える