我有一个带有Where子句的LINQ查询,该子句可以返回单个实体,也可以不返回任何实体。我只对单个属性感兴趣所以我会使用选择,然后使用 SingleOrDefault(Async)。
但是,我感兴趣的属性是值类型。是否可以以这样的方式执行查询:当查询没有返回结果时,我可以获得可为空的类型而不是默认值?
我当然可以查询整个对象,只返回那个属性,但我想知道是否有更好的方法。
答案 0 :(得分:2)
您可以使用Select
将您的值类型转换为可以为null的类型,因此它将为null而不是默认值。
List<int> numbers = new List<int>();
// this will be null
var number1 = numbers.Select(x => (int?)x).SingleOrDefault();
// this will be default value which is zero
var number2 = numbers.SingleOrDefault();