【问题标题】:Entity Framework OrDefault value types实体框架或默认值类型
【发布时间】:2018-04-13 11:37:11
【问题描述】:

我有一个带有 Where 子句的 LINQ 查询,它可以返回单个实体或不返回任何实体。我只对单个属性感兴趣,所以我会使用 Select 后跟 SingleOrDefault(Async)

但是,我感兴趣的属性是值类型。当查询没有返回结果时,是否有可能以这样一种方式执行查询,即我可以获得一个可为空的类型,而不是默认值?

我当然可以查询整个对象,只返回一个属性,但我想知道是否有更好的方法。

【问题讨论】:

  • 请举例说明类属性以及您尝试将哪些属性选择为可空值。
  • 为什么不直接使用 FirstOrDefault(x=> x.Condition) 而不是 Where、Select 和 SingleOrDefault ?

标签: c# asp.net entity-framework linq entity-framework-6


【解决方案1】:

您可以使用Select 将您的值类型转换为可空类型,这样它将为空而不是默认值。

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();

【讨论】:

  • 完美运行;我不知道 Select 是这样工作的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
相关资源
最近更新 更多