entity-framework - 在查询中使用 FirstOrDefault()

标签 entity-framework entity-framework-4.1

有没有办法使用FirstOrDefault()在复杂查询中,但如果返回空值不会抛出异常?
我的查询:

contex.Table1.Where(t => t.Property == "Value").FirstOrDefault()
             .Object.Table2.Where(t => t.Property2 == "Value2").FirstOrDefault();
如果对第一个表 (Table1) 的查询未返回对象,则代码将引发异常。有没有办法让它只返回空值?

最佳答案

试试 SelectManyTable2 ,没有中间 FirstOrDefault() :

context.Table1.Where(t1 => t1.Property1 == "Value1")
              .SelectMany(t1 => t1.Table2.Where(t2 => t2.Property2 == "Value2"))
              .FirstOrDefault();

此外,您可能希望使用 SQL Profiler 来检查 EF 发送的 SQL。我相信在您的问题中构造的查询将导致两个查询被发送到数据库;每人一份 FirstOrDefault() .

关于entity-framework - 在查询中使用 FirstOrDefault(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7993569/

相关文章:

entity-framework - 使用 Max 和过滤器的 EF6 查询

c# - 我将如何将以下 T-SQL 语句翻译成 Linq

entity-framework - MVC3和EF数据优先: what are the best practices?

c# - 依赖于字符串值的业务逻辑

validation - Entity Framework IValidatableObject 引用 DbContext

c# - LINQ to Entities 如何更新记录

c# - 尝试添加项目时在 Entity Framework 中出错

c# - 如何在不加载相关记录的情况下判断是否设置了Entity Framework中的Navigation Property

.net - EF 4.1 + MVC + JSON 循环引用异常的最佳解决方案?

.net - 从 Entity Framework 模型中恢复已删除的字段,无需删除实体