7

以下のコードを使用すると、オブジェクト参照エラーが発生します。これは、「スパイダー」に一致するものがないためである可能性があります。私の質問は、これらの状況でnull値を確認する方法です

int fooID = foos.FirstOrDefault(f => f.Bar == "spider").ID;

リストからさまざまなアイテムを取得するためのさまざまな条件に、この同じシナリオを使用しています

int fooID = foos.FirstOrDefault(f => f.Bar == "spider").ID; 
String fooDescription = foos.FirstOrDefault(f => f.Sides == "Cake").Description; 

null 値を確認する他の方法はありますか。

4

2 に答える 2

8

通常と同じ方法で、変数を割り当ててチェックします。

var foo = foos.FirstOrDefault(f => f.Bar == "spider");

if (foo != null)
{
    int fooID = foo.ID;
}

更新された例に基づいて、代わりにこれを行う必要があります。

var fooForId = foos.FirstOrDefault(f => f.Bar == "spider");
var fooForDescription = foos.FirstOrDefault(f => f.Sides == "Cake");

int fooId = fooForId != null ? fooForId.Id : 0;
string fooDescription = fooForDescription != null ? fooForDescription.Description : null; // or string.Empty or whatever you would want to use if there is no matching description.
于 2013-04-18T11:04:44.010 に答える
1

DefaultIfEmpty一致する要素がない場合は、動作に拡張メソッドを使用することもできます。次のコードは使用法を示しています

string[] foos = {"tyto", "bar"};

var res = foos.Where(s => s.Length == 2)
              .DefaultIfEmpty("default")
              .First()
              .Length;

Console.WriteLine (res); //will print the length of default, which is 7
于 2013-04-18T11:12:09.197 に答える