LINQ-不存在的地方

LINQ-不存在的地方,linq,exists,Linq,Exists,在LINQ中,以下语句的等效项是什么: Select t1.appname, t1.julianDte, t1.cat From table1 t1 Where NOT EXISTS ( Select * from table t2 where t1.cat = t2.cat AND t2.julianDte < t1.julianDte ) 试试这个,不要任何图案 查询@Amy B答案的语法版本!任何一个倒转为所有: from t1 in db.Ta

在LINQ中,以下语句的等效项是什么:

Select t1.appname, t1.julianDte, t1.cat 
From table1 t1 
Where NOT EXISTS 
   ( Select * 
     from table t2 
     where t1.cat = t2.cat AND t2.julianDte < t1.julianDte )
试试这个,不要任何图案


查询@Amy B答案的语法版本!任何一个倒转为所有:

from t1 in db.Table1
where db.Table2.All(t2 => t1.cat != t2.cat || t2.julianDte >= t1.julianDte)
select new
{
    t1.appname,
    t1.julianDte,
    t1.cat
};

这转换成sql的效果如何?根据我的经验,或是应该避免的。出于好奇,关于或会使其比和更危险?或倾向于干扰索引的使用。找到住在第三街的水管工。。。在这种情况下,按街道划分的人口指数非常有用。找到住在第三街或是水管工的人。。。在这种情况下,按他们居住的街道划分的索引就没那么有用了。我会确保用//where NOT EXISTS来评论这一点,并尝试格式化它!db.表2.任何。。。这样就可以了!和其他人在同一条线上。通常LINQ是相当自我描述的,但我认为这是一个非常感谢评论的案例,但未来的开发人员会看到您的代码。@AaronLS这是一个有趣的哲学问题。。。语法演示应该有多好的注释?我显然不需要为了提问者的利益而发表评论,因为他已经在问题中使用了sql表单。我不是在批评你的答案,我是在为使用此代码的任何人提供一个一般性建议,感谢它的有用性。
from t1 in db.Table1
where db.Table2.All(t2 => t1.cat != t2.cat || t2.julianDte >= t1.julianDte)
select new
{
    t1.appname,
    t1.julianDte,
    t1.cat
};
from t1 in Context.table1DbSet
let ok = 
    (from t2 in Context.table2DbSet 
     where t2.Idt1 = t1.Idt1 && t1.DateValid.HasValue
    ).Any()
where 
   t1.Active
   && !ok