【问题标题】:Are these Linq-to-Entities expressions identical in their effect?这些 Linq-to-Entities 表达式的效果是否相同?
【发布时间】:2015-11-11 21:11:17
【问题描述】:

鉴于entitiesIDbSet<Entity> 和以下表达式:

entities.Where(e => e.EntityID == 27).AsNoTracking().SingleOrDefault();

下面的替代表达式实际上是相同的(删除Where并将其条件放入SingleOrDefault):

entities.AsNoTracking().SingleOrDefault(e => e.EntityID == 27);

【问题讨论】:

    标签: linq-to-entities entity-framework-6


    【解决方案1】:

    生成的SQL 对于两个表达式来说是相同的,所以是的,它们是相同的。您应该为您的项目选择一个约定并坚持下去。就个人而言,这只是我的看法,我更喜欢使用.Where(),因为我发现它更容易阅读:

    entities
        .Where(e => e.EntityID == 27)
        .AsNoTracking()
        .SingleOrDefault();
    

    【讨论】:

    • 请确认:AsNoTracking 方法将适用于整个链,无论它在哪里,只要它仍然是 IQueryable,在任何切换到 IEnumerable 之前?而且我个人非常喜欢在使用可以采用相同条件的另一种方法时删除 Where 。在需要的时候让事情变得更冗长,但是,天哪,当你不需要的时候不要这样做!更短的代码对我来说更容易扫描。
    • 只是在等待您对我的评论的回复以选择您的答案。
    猜你喜欢
    • 2016-04-17
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多