使用具有一些空值的linq迭代数组

时间:2016-01-04 07:46:14

标签: c# arrays linq

我有一个问题数组,其中一些是空的,其中一些有一些东西。 像这样:

Questions = {null , null , object , null , object}

在这个阵列上使用linq的方法是什么?

Questions.Where(x => x.someValue == OtherValue).ToList();

这给了我错误

感谢。

3 个答案:

答案 0 :(得分:6)

您收到错误是因为您尝试检查null对象上的属性。试试这个:

Questions.Where(x => (x != null) && (x.someValue == OtherValue)).ToList();

像这样,如果第一个条件为假,编译器将不会查看第二个条件(x.someValue == OtherValue)。

答案 1 :(得分:3)

您可以先过滤掉空值:

Questions
    .Where(x => x != null)
    .Where(x => x.someValue == OtherValue)
    .ToList();

答案 2 :(得分:1)

您可以使用C#6功能Null conditional operator

Questions.Where(x => x?.someValue == OtherValue).ToList();