这个linq查询有效吗?

时间:2011-03-26 12:44:40

标签: linq

这个linq查询是否有效?

    var qry = ((from member in this.ObjectContext.TreeMembers.Where(m => m.UserId == userId && m.Birthdate == null)
              select member.TreeMemberId).Except(from item in this.ObjectContext.FamilyEvents select item.TreeMemberId));


    var mainQry = from mainMember in this.ObjectContext.TreeMembers
                  where qry.Contains(mainMember.TreeMemberId)
                  select mainMember;

这会被转换为多个sql调用还是只有一个?可以优化吗?基本上我有2个表,我想从table1中选择那些datetime为null并且该记录不应该存在于table2中的记录。

1 个答案:

答案 0 :(得分:1)

查明查询是否会进行多次调用的最简单方法是设置数据上下文的.Log属性。我通常将其设置为写入DebugOutputWriter。可以找到这类课程的一个很好的例子here

但是,对于一般的思考方式,如果使用类的属性不直接映射到where子句或join子句中的数据库字段,它通常会进行多次调用。根据您提供的内容,您的方案看起来似乎,但我不能完全确定并建议使用上面列出的方法。