日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Linq 中 Any与All

發布時間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linq 中 Any与All 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
昨天突然看到之前寫的一個積累文檔,其中文檔中有一個Linq Any和All的注意事項:

注意Any All

??????????? var list = new List<int>();

??????????? var aa = list.All(n => n > 1);

??????????? var bb = list.Any(n => n > 1);

??????????? // aa: true?????? bb: false

?

其中List是一個元素個數為0的整型List??赡艽蠖鄶等烁乙粯?#xff0c;第一次見到都會認為aa為false。然后這個是我在程序中寫Linq的時候,造成了很大困惑,明明條件是正確的(當時一直認為aa為false),卻結果不對。?最后一句一句,一個條件一個條件的拆分了執行,才找到這個原因。
看看他生成的SQL,我們就知道原因了

All: ? ? ?IQueryable<Test>.All(t=>t.OpenId=="")

?1?--?Region?Parameters
?2?DECLARE?@p0?NVarChar(1000)?=?''
?3?--?EndRegion
?4?SELECT?
?5?????(CASE?
?6?????????WHEN?NOT?(EXISTS(
?7?????????????SELECT?NULL?AS?[EMPTY]
?8?????????????FROM?[Test]?AS?[t1]
?9?????????????WHERE?(
10?????????????????(CASE?
11?????????????????????WHEN?[t1].[OpenId]?=?@p0?THEN?1
12?????????????????????ELSE?0
13??????????????????END))?=?0
14?????????????))?THEN?1
15?????????WHEN?NOT?NOT?(EXISTS(
16?????????????SELECT?NULL?AS?[EMPTY]
17?????????????FROM?[Test]?AS?[t1]
18?????????????WHERE?(
19?????????????????(CASE?
20?????????????????????WHEN?[t1].[OpenId]?=?@p0?THEN?1
21?????????????????????ELSE?0
22??????????????????END))?=?0
23?????????????))?THEN?0
24?????????ELSE?NULL
25??????END)?AS?[value]

?可以看得出來, All 是用的 Not (Exists) , 當Query為空的時候,Exists是為false的,而前面一個Not (false),當然也成為了True;

?Any: ? ? ? ? ?IQueryable<Test>.Any(t=>t.OpenId=="")

??1?--?Region?Parameters

?2?DECLARE?@p0?NVarChar(1000)?=?''
?3?--?EndRegion
?4?SELECT?
?5?????(CASE?
?6?????????WHEN?EXISTS(
?7?????????????SELECT?NULL?AS?[EMPTY]
?8?????????????FROM?[Test]?AS?[t0]
?9?????????????WHERE?[t0].[OpenId]?=?@p0
10?????????????)?THEN?1
11?????????ELSE?0
12??????END)?AS?[value]

?

可以看出 ? Any生成的是Exists。??當Query為空的時候,Exists是為false的。

?

轉載于:https://www.cnblogs.com/AaronAndJoe/p/4642231.html

總結

以上是生活随笔為你收集整理的Linq 中 Any与All的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。