web-dev-qa-db-ja.com

Linqを使用して、オブジェクトのリストからプロパティの一意のリストを取得するにはどうすればよいですか?

私は、Linqを使用して、IDがプロパティであるオブジェクトのリストが与えられたIDのリストを返そうとしています。各オブジェクトをループして、見つけた一意のIDを引き出すことなく、これを実行できるようにしたいと思います。

タイプMyClassのオブジェクトのリストがあり、このクラスのプロパティの1つはIDです。

public class MyClass
{
  public int ID { get; set; }
}

私がしたいのは、それらのIDのリストを返すLinqクエリを書くことです

IDのIList<MyClass>を返すようにIEnumerable<int>を指定してそれを行うにはどうすればよいですか?

MyClassリスト内の各アイテムをループして、一意の値をリストに追加するのではなく、Linqを使用して1行または2行でそれを実行できる必要があります。

エレガントなソリューションを作成する上で助けていただければ幸いです!

163
mezoid
IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();
303
Marc Gravell

個別の演算子 を使用します。

var idList = yourList.Select(x=> x.ID).Distinct();
29
CMS

ストレートLinqを使用し、Distinct()拡張子を付けます。

var idList = (from x in yourList select x.ID).Distinct();
13
Dana
        int[] numbers = {1,2,3,4,5,3,6,4,7,8,9,1,0 };
        var nonRepeats = (from n in numbers select n).Distinct();


        foreach (var d in nonRepeats)
        {

            Response.Write(d);
        }

出力

1234567890

3
Black Eagle