【发布时间】:2014-03-04 07:38:33
【问题描述】:
class ResultType
{
public string Value{ get; set; }
public int Count{ get; set; }
}
var someList = new List<ResultType>(){new ResultType(){Value = "A"},new ResultType(){Value = "B"}};
ResultType z = someList.FirstOrDefault(x => x.Value == "A") ??
someList.FirstOrDefault(x => x.Value == "B");
z 应该获取 Value 为 A 的项目的值(它的项目的值为 A 和 B,它们不为空!)但我收到 null,为什么会发生这种情况?
if(someList.FirstOrDefault(x => x.Value == "A")!=null) z= someList.FirstOrDefault(x => x.Value == "A");
这行得通。
当我这样做时
someList.FirstOrDefault(x => x.Value == "A")
和
someList.FirstOrDefault(x => x.Value == "B")
保存到变量中,然后用作
z = a ?? b
这个也可以
请注意,这两个值都不为空!
【问题讨论】:
-
someList 的类型是什么? (即可以是值类型)
-
可能很小
a?不是大写?或Value属性可能是Object类型 -
尝试创建一个 for 并打印所有值以检查里面有什么。
-
类型是一些自定义结构,包含一个字符串(值)和 int
-
尝试 someList.FirstOrDefault(x => x.Value.Equals("A"));只是为了确保您不会比较对象引用。