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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个简单问题引发对IEnumerable和IQueryable的思考

發(fā)布時間:2025/3/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个简单问题引发对IEnumerable和IQueryable的思考 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

問題概述:

??   首先看下圖,有客戶表和客戶負(fù)責(zé)人表關(guān)系是多對多,訪問數(shù)據(jù)庫使用的是EF所以這里我們開啟了延遲加載,需求就是將每個客戶的所有負(fù)責(zé)人逗號拼接顯示在負(fù)責(zé)人這一欄位,

???????? 對你沒看錯需求就是這么簡單如果是寫sql也許我們會去用兩個循環(huán)去做,問題是要用linq實現(xiàn)。

?

?

這是我起初的寫法:

首先申明這個resultlist接收到的類型本該是Iqueryable<Customer> 但我們要放入PrincipalNames字段(逗號拼接顯示字段)所以接收的是匿名類型 這樣寫報的錯是:

大概意思:LINQ實體不能識別方法的系統(tǒng)。字符串連接(系統(tǒng)。system . String[])字符串,的方法,這種方法不能被翻譯成一個存儲表達(dá)式

然后各種百度谷歌發(fā)現(xiàn)其原因是將這段linq翻譯成sql的時候string.Join()方法不被識別也就是沒法翻譯,這時我就郁悶了,甚至懷疑linq

能不能實現(xiàn)這樣的需求、

中途有想過不用linq實現(xiàn),用兩個循環(huán)賦值去實現(xiàn)實現(xiàn):做法就是先循環(huán)客戶信息再循環(huán)客戶下的負(fù)責(zé)人將負(fù)責(zé)人的名稱拼接賦值給客戶的負(fù)責(zé)人

但由于前面客戶是匿名類型PrincipalNames并不存在客戶表中所以不能賦值,so解決方案就是還要在建立一個含有PrincipalNames字段的視圖模型

這樣才能循環(huán)后去賦值!我也是醉了,咋這麻煩。

又想了想不可能啊 這樣的需求很正常不是嗎linq怎么可能不能實現(xiàn),繼續(xù)找~

在博客園找都一篇闡述IEnumerable和IQueryable區(qū)別的文章:http://www.cnblogs.com/FlyEdward/archive/2010/02/01/Linq_ExpressionTree2.html

感覺有點意思繼續(xù)找類似的文章佐證,發(fā)現(xiàn)還真是這東西在作怪 ,先看看正確的查詢寫法:

重點就在我劃紅線的地方這樣寫resultlist接收的類型是IEnumberable<Customer>類型這樣寫其會先將數(shù)據(jù)全部查入內(nèi)存中在進(jìn)行查詢,并沒有將

后面的條件也就是匿名類里面的東西包括string.Join方法翻譯成sql 這樣就不會出現(xiàn)之前不能string.Join()方法不識別的問題了,OK解決!

總結(jié)

IQueryable繼承自IEnumerable,所以對于數(shù)據(jù)遍歷來說,它們沒有區(qū)別。

1.IEnumerable查詢必須在本地執(zhí)行.并且執(zhí)行查詢前我們必須把所有的數(shù)據(jù)加載到本地.而且更多的時候.加載的數(shù)據(jù)有大量的數(shù)據(jù)是我們不需要的無效數(shù)據(jù).但是我們卻不得不傳輸更多的數(shù)據(jù).做更多的無用功。
使用IEnumerable,所有對于IEnumerable的過濾,排序等操作,都是在內(nèi)存中發(fā)生的。也就是說數(shù)據(jù)已經(jīng)從數(shù)據(jù)庫中獲取到了內(nèi)存中,只是在內(nèi)存中進(jìn)行過濾和排序操作。

2.IQueryable卻總能只提供你所需要的數(shù) 據(jù).大大減少了數(shù)據(jù)的傳輸
IQueryable的優(yōu)勢是它有表達(dá)式樹,所有對于IQueryable的過濾,排序等操作,都會先緩存到表達(dá)式樹中,只有當(dāng)真正遍歷發(fā)生的時候,才會將表達(dá)式樹由IQueryProvider執(zhí)行獲取數(shù)據(jù)操作。

以上觀點屬個人領(lǐng)悟,若有問題歡迎糾正。

?

轉(zhuǎn)載于:https://www.cnblogs.com/fighting2014/p/4239723.html

總結(jié)

以上是生活随笔為你收集整理的一个简单问题引发对IEnumerable和IQueryable的思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 可以免费在线观看的av | 天天射日| 制服丝袜在线播放 | 97麻豆视频 | 精品人妻一区二区三区蜜桃 | 影音先锋婷婷 | 国产特级片 | 亚洲AV成人无码久久精品巨臀 | 淫人网| 国产成人无码精品 | 久久久美女视频 | 亚洲字幕 | jizz在线观看 | 中文天堂在线视频 | 日本在线观看一区二区三区 | www.欧美国产| 久久精品一 | 欧美一级影院 | 久热在线视频 | 男女操操操 | 欧美精品一区二区免费看 | 精品久久久99 | 性xxx欧美 | 日本熟妇毛耸耸xxxxxx | 午夜特片网| 久久99网 | 成人爽a毛片一区二区 | 亲子乱子伦xxxx | 好吊操视频这里只有精品 | 黑人巨大精品欧美一区二区 | ts人妖在线观看 | 久久影院午夜理论片无码 | 日韩无码精品一区二区 | 亚洲激情图 | 伊人婷婷色 | 欧美色图视频在线 | 欧美国产大片 | 蜜臀在线观看 | 大片视频免费观看视频 | 免费日本黄色网址 | 99热这里只有精品9 日韩综合在线 | 在线免费黄色网址 | 老师上课夹震蛋高潮了 | 啪啪在线视频 | 国产成人精品视频在线观看 | a级黄色网址 | 自拍21区 | 夜夜骑夜夜骑 | 久久久一区二区三区四区 | 亚洲一区二区免费看 | 黑巨茎大战欧美白妞 | 粉豆av| 天天综合色 | 国产丰满麻豆 | 美女午夜激情 | 毛片视频播放 | 欧美a级免费 | 免费99精品国产自在在线 | 激情小说视频在线 | 超碰加勒比 | 久久久九九 | 国产春色 | www国产精品| 一道本av在线 | 精品1卡二卡三卡四卡老狼 日韩三级网 | 国产精品1区| 欧洲av一区二区 | 国产精品1024 | 艳妇臀荡乳欲伦交换在线看 | 人妻大战黑人白浆狂泄 | www.成人在线| 99一区二区 | 亚洲熟妇av日韩熟妇在线 | 青青视频在线播放 | 九九九九九伊人 | 高清视频免费在线观看 | 午夜爱爱毛片xxxx视频免费看 | 亚欧在线观看 | 草草影院第一页 | 成人羞羞国产免费 | 中文字幕无码乱码人妻日韩精品 | 日本三级吹潮 | 三女同志亚洲人狂欢 | 少妇久久久久久被弄到高潮 | www.日本精品 | 黄色片网站在线免费观看 | 欧美日韩一区二区电影 | 亚洲伊人色 | 国产成人宗合 | 污片视频在线观看 | 99精品国产成人一区二区 | 福利在线播放 | 青青草华人在线视频 | 精品一区二区视频在线观看 | 国产一区二区三区视频网站 | 欧美色图五月天 | 黄瓜视频污在线观看 | 亚洲av毛片一区二二区三三区 | 亚洲av中文无码乱人伦在线观看 |