0

重複の可能性:
linq を使用してリスト内の重複を削除する

IQueryableコレクションから重複を削除しようとしています。ある種のネストされた選択を行う必要があると考えていますが、よくわかりません。展開されたアイテムと折りたたまれたアイテムの両方が重複した元のリストを持つスクリプトをlinqpadで作成しました。

私がやりたいのは、にlistWithDuplicatesないアイテムを my から選択することdupesAsListです。listWithDuplicatesまた、重複していることが判明した場合は、IDが最も高いレコードを保持したいと思います...

誰かが重複を削除するための最善の方法を教えてくれたり助けてくれるかどうか疑問に思いましたか?

void Main()
{
    var listWithDuplicates = new List<Tuple<int,string>>();
    listWithDuplicates.Add(new Tuple<int,string>(1,"Dog"));
    listWithDuplicates.Add(new Tuple<int,string>(2,"Cat"));
    listWithDuplicates.Add(new Tuple<int,string>(3,"Dog"));
    listWithDuplicates.Add(new Tuple<int,string>(4,"Chicken"));
    listWithDuplicates.Add(new Tuple<int,string>(5,"Dog"));
    listWithDuplicates.Add(new Tuple<int,string>(6,"Dog"));
    listWithDuplicates.Add(new Tuple<int,string>(7,"Chicken"));

    var dupesAsList = listWithDuplicates.GroupBy(s => s.Item2).SelectMany(grp => grp.Skip(1));

    var dupesGrouped = listWithDuplicates.GroupBy(s => s.Item2).Where(x => x.Count() > 1).Select(x => x.Key);

    dupesAsList.Dump();

    dupesGrouped.Dump();
}

注:クエリ構文ではなくラムダ式でこれを行う必要があります!

4

0 に答える 0