リストを検索するときに、例外をスローする代わりにnullを返すlinq lambda検索メソッドはありますか?
私の現在の解決策は次のようなものです:(例外がスローされるのを避けるため)
if (list.Exists(x => x.Foo == Foo))
{
var listItem = list.Find(x => x.Foo == Foo);
}
表現を繰り返すのは間違っているように感じます。
何かのようなもの ...
var listItem = list.Find(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
...気分が良くなりました。それとも私だけですか?
これについてより良いアプローチがありますか? (ソリューションはnullを返す必要はありません。より良いソリューションが良いだけです)
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (listItem != null)
{
//Do stuff
}
Bala Rの答えは正しいです。情報を追加したかっただけです。
List<T>
には、設計上nullにできないオブジェクトが含まれています。FirstOrDefault
はnull
以外のものを返します。コンパイラは、ifステートメントでこれについて警告/エラーを出す可能性があります。その場合、次のように状況にアプローチする必要があります。
List<MyObjectThatCannotBeNull> list;
var listItem = list.FirstOrDefault(x => x.Foo == Foo);
if (!listItem.Equals(default(MyObjectThatCannotBeNull)))
{
//Do stuff
}