Sql中not exists, 如何用linq表示

比如:这条sql:
select * from table1 as t1
where not Exists(select * from table2 where t1.id=t2.id)
像这条语句用linq如何表示?

你要说完全一样,那是不太可能的。
第一,你的语句本身就有优化空间。
你的和如下的sql 等效:
select * from table1 as t1
where not Exists(select null from table2 where t1.id=t2.id)
如上可减少内存空间交换输出。
------------------------------------------------------------------
linq:如下是检索没有明细的订单,跟你的要求一样. 你改成t1 t2 就行了

from x in Orders
where !Order_Details.Any(t => t.Detail_Order_ID != x.Order_NO)
select x

如上转化成的sql是:
SELECT [t0].[order_ID] AS [Order_ID], [t0].[order_NO] AS [Order_NO]
FROM [Order] AS [t0]
WHERE NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Order_Detail] AS [t1]
WHERE [t1].[detail_Order_ID] <> [t0].[order_NO]
))
----------
如上的写法应该够水准。回头给我多加红包哦!追问

高人,我可不可以理解成这样,
from x in t1
where !t2.Any(t => t.id != x.id)
select x

另:
1)!t2.Any()是什么意思?
2)t => 是什么意思?

追答

from x in t1
where !t2.Any(t => t.id != x.id)
select x
你这个要改成==
from x in t1
where !t2.Any(t => t.id == x.id)
select x
以上代表

---
SQL 里有some any all 等 这个很基础的理论。
以上代表!t2.Any() t2 中的任意记录都不满足。
t => 这不是 lambda表达式么!linq的基础。linq本身也是方法树

怎么回事?问linq 却不认识linq的基础方法

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-02
用Contains()方法;
首先获取t2.id这个对象 假如这个id=2
假如表是User
var item=from u in ctx.user where u.id=2;
再判断 bool isexists= ctx.user.Contains(item);追问

可不可以就一条语句搞定呢,期待你高人

追答

你就是查询一条数据是否在数据库中存在对不对?
那就这样啊
var item=from u in ctx.user where u.uid=你在页面上获取的id啊
如果不存在的这条数据的话,item会为null的

本回答被网友采纳
第2个回答  2011-12-03
不会,纯支持,加贴track。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网