私は、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行でそれを実行できる必要があります。
エレガントなソリューションを作成する上で助けていただければ幸いです!
IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();
個別の演算子 を使用します。
var idList = yourList.Select(x=> x.ID).Distinct();
ストレートLinqを使用し、Distinct()
拡張子を付けます。
var idList = (from x in yourList select x.ID).Distinct();
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