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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Linq表达式、Lambda表达式你更喜欢哪个?

發(fā)布時間:2024/6/30 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linq表达式、Lambda表达式你更喜欢哪个? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是Linq表達式?什么是Lambda表達式?

如圖:

由此可見Linq表達式和Lambda表達式并沒有什么可比性。

那與Lambda表達式相關(guān)的整條語句稱作什么呢?在微軟并沒有給出官方的命名,在《深入理解C#》中稱為點標記。

查詢表達式、點標記你更喜歡哪個?

所以,我們的標題的提問根本就不合適。應(yīng)該是“查詢表達式和點標記你更喜歡哪個?”。如:

//查詢表達式var students1 = from t in db.Studentswhere t.Name == "張三"select new { t.Id, t.Name, t.Age };//點標記var students2 = db.Students.Where(t => t.Name == "張三").Select(t => new { t.Id, t.Name, t.Age });

為什么選擇點標記?

我相信更多的人偏向選擇點標記。具體什么原因我也說不清(可能是點標記中的Lambda更加優(yōu)雅吧)。對于我個人來說,也是更加喜歡點標記這種方式。

1、所有的查詢表達式都可以轉(zhuǎn)成對應(yīng)的點標記。反之,不是所有的點標記都可以轉(zhuǎn)成查詢表達式。

為什么?因為查詢表達式在編譯后就直接變成了點標記:(以下是上面兩個語句對應(yīng)的編譯后的反編譯C#代碼)

生成了一模一樣的代碼。(由于是編譯后的,好多亂七八糟的代碼。我們只看Where和Select關(guān)鍵字就知道,使用的都是點標記。)

2、點標記確實比查詢表達式更加優(yōu)雅

例一:

//查詢表達式var students1 = from t in db.Studentswhere t.Name == "張三"select t;//點標記var students2 = db.Students.Where(t => t.Name == "張三");

我為什么一定要?select?t?啊,這句沒卵用的廢話就不能省嗎?是的,省了就報錯:

例二:

必須需要括號包裹起來才能取結(jié)果集?你還能更丑一點嗎?

//查詢表達式 var students1 = (from t in db.Studentswhere t.Name == "張三"select t).ToList(); //點標記 var students2 = db.Students.Where(t => t.Name == "張三").ToList();

例三:(為什么說:"不是所有的點標記都可以轉(zhuǎn)成查詢表達式"【此例只適用于IEnumerator】)

此條點標記你能轉(zhuǎn)成查詢表達式嗎?

var list = new List<string>() { "張三", "張三", "張三", "張三", "李四", "張三", "李四", "張三", "李四" };var students2 = list.Where((item, index) => item == "張三" && index % 2 == 0).Select((item, index) => new { item, index }).ToList();

查詢表達式你能Reverse嗎?

var list = new List<string>() { "張三1", "張三2", "張三3", "張三0", "李四9", "張三3", "李四", "張三2", "李四" };var students2 = list.Where((item, index) => item.Contains("張三")).Select((item, index) => new { item, index }).Reverse()//反序.ToList(); ListA.Distinct().ToList();//去重 ListA.Except(ListB).ToList();//差集 ListA.Union(ListB).ToList(); //并集 ListA.Intersect(ListB).ToList();//交集

?

什么時候使用查詢表達式?

通過上面的對比,好像查詢表達式一文不值了。no,不是這樣的。

比如下面幾種情況我們就可以選擇使用查詢表達式:

例一:(本例適用于Linq to Object 和 沒有建主外鍵的EF查詢)

點標記中的Join需要傳四個參數(shù)表達式,是不是有點暈了。。。

var list1 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "張三" }, { "4", "張三" } }; var list2 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "李四" }, { "4", "張三" } };//查詢表達式 var obj1 = from l1 in list1join l2 in list2on l1.Key equals l2.Keyselect new { l1, l2 }; //點標記 var obj = list1.Join(list2, l1 => l1.Key, l2 => l2.Key, (l1, l2) => new { l1, l2 });

例二:

點標記需要區(qū)分OrderBy、ThenBy有沒有覺得麻煩

//查詢表達式 var obj1 = from l1 in list1join l2 in list2on l1.Key equals l2.Keyorderby l1.Key, l2.Key descendingselect new { l1, l2 }; //點標記 var obj = list1.Join(list2, l1 => l1.Key, l2 => l2.Key, (l1, l2) => new { l1, l2 }).OrderBy(li => li.l1.Key).ThenByDescending(li => li.l2.Key).Select(t => new { t.l1, t.l2 });

總覺得查詢表達式更多的只是為了照顧那些寫慣了sql的程序員。

聯(lián)接查詢(內(nèi)聯(lián)、左聯(lián)、交叉聯(lián))

關(guān)于聯(lián)接查詢使用查詢表達式會更合適一些這個上面已經(jīng)說了。

接下來我們寫內(nèi)聯(lián)、左聯(lián)、交叉聯(lián)的查詢表達式和對應(yīng)的點標記代碼。(目的:可能有些人不會,同時在這里也給自己做個備忘)

內(nèi)聯(lián):

左聯(lián):

交叉聯(lián):

其實關(guān)于聯(lián)接查詢,如果EF建好了主外鍵我還是覺得點標記用起來更爽爽的。

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

總結(jié)

以上是生活随笔為你收集整理的Linq表达式、Lambda表达式你更喜欢哪个?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产乱叫456在线 | 婷婷天堂网 | 国产乱码精品一区二区三区不卡 | 精品无码av一区二区三区不卡 | 欧美视频在线免费看 | 少妇激情视频 | 无码人妻久久一区二区三区 | av色在线观看 | 一亲二脱三插 | 精品一区二区三区在线免费观看 | 农村末发育av片一区二区 | 亚洲免费色 | 成人性生活毛片 | 爱搞逼综合网 | 日本三级中文字幕 | 九九欧美 | 在线播放a| 羞辱狗奴的句子有哪些 | 99精品影视 | 一级做a爰片毛片 | 日韩一区在线免费观看 | 国产又粗又长又爽 | 综合精品一区 | 男人的天堂伊人 | 朴麦妮原版视频高清资源 | av私库在线观看 | 曰本三级日本三级日本三级 | 国产精彩视频在线 | 激情开心成人网 | 日韩人妻无码精品久久久不卡 | 亚洲最大的网站 | 性视频免费看 | 男女拍拍拍 | 日本欧美色 | 色呦呦国产精品 | 男女操操操 | 日韩天堂网| 天天插综合网 | 久热99 | 欧美乱码精品一区二区 | 热久久免费 | 能看的黄色网址 | 女生的胸无遮挡 | av有码在线| 欧美视频在线观看一区二区三区 | 视频在线日韩 | 国产91久久精品一区二区 | 欧美疯狂做受xxxxx高潮 | 青青草偷拍视频 | 亚洲在线观看av | 精品视频免费在线 | 特级av | 欧美日韩成人精品 | 黄色网在线免费观看 | 国产盗摄在线观看 | 亚洲网址在线 | 国模在线视频 | 性色国产成人久久久精品 | 国产精品视频网 | 男人的网址 | 人人妻人人澡人人爽精品欧美一区 | 波多野一区二区 | 东京热一本视频一区 | 特大黑人娇小亚洲女 | 日韩免费黄色 | 欧美日韩综合在线 | 欧美日本激情 | 天天国产视频 | 性色av蜜臀av色欲av | 老司机精品导航 | 在线国产一区二区三区 | 两根大肉大捧一进一出好爽视频 | 日韩一级免费看 | 日本xxxx18高清hd | 9·1·黄·色·视·频 | 欧美一区二区在线视频 | 蜜桃91麻豆精品一二三区 | 欧美做受高潮动漫 | 美女免费毛片 | 成年人看的黄色 | 欧美日韩在线观看视频 | 艳妇乳肉亭妇荡乳av | 欧美国产日韩精品 | 欧美黑大粗 | 亚洲网站一区 | 在线免费观看污视频 | 老司机在线观看视频 | 国产精品你懂的 | 人人草在线观看 | 久久国| 天堂亚洲 | 丰满熟女人妻一区二区三区 | 国产日韩91 | 永久免费看mv网站入口78 | 久久精品久久久久久久 | 日本一区二区高清视频 | 天天射综合网站 | 亚洲精品高潮久久久久久久 | 69人妻一区二区三区 |