当我使用下面的代码时,我得到对象引用错误,这可能是因为“蜘蛛”没有匹配。我的问题是,如何在这些情况下检查空值
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;
是否有其他方法可以检查空值。
答案 0 :(得分: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.
答案 1 :(得分:1)
如果没有匹配的元素,您可能还想使用DefaultIfEmpty
扩展方法进行bevaiour。下一代码演示了用法
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