Linqクエリで特定の型をどのように返しますか?ToList()を使用して特定のオブジェクトのリストを返すことができることは知っていますが、非リストを返すにはどうすればよいですか?
MyObj x = from x in list where x.id == 99 select x;
MyObj x = (from x in list where x.id == 99 select x).Single();
ID が存在しない可能性があると予想される場合は、SingleOrDefault を使用して、型の既定値 (この場合はおそらく null) を返すことができます。
もちろん、First() を使用することもできますが、返されるアイテムが 1 つだけであると予想される場合、これによりエラーが隠される可能性があるため、注意が必要です。
MyObj x = list.FirstOrDefault(i=>i.id == 99);
IEnumerable
単一のアイテムを返すために使用できる別の方法:
list.Single(i=>i.id == 99)
: 一致が見つからない場合、または複数の一致が見つかった場合、例外をスローします。list.SingleOrDefault(i=>i.id == 99)
: 一致が見つからない場合は null を返し、複数の一致が見つかった場合は例外をスローします。list.First(i=>i.id == 99)
: 一致するものが見つからない場合、例外をスローします。複数の一致が見つかった場合は、リストの最初の項目を返します。list.FirstOrDefault(i=>i.id == 99)
: 一致が見つからない場合は null を返します。複数の一致が見つかった場合は、リストの最初の項目を返します。MyObj x = list.Where(x => x.id == 99).FirstOrDefault();