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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Linq表达式和Lambda表达式用法对比

發布時間:2023/12/2 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linq表达式和Lambda表达式用法对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Linq表達式?什么是Lambda表達式?
前一段時間用到這個只是,在網上也沒找到比較簡單明了的方法,今天就整理了一下相關知識,有空了再仔細研究研究

public Program() { List<Student> allStudent = new List<Student> { new Student("張三",23), new Student("李四",29), new Student("王二",25), new Student("趙六",26) }; //Ling表達式 var stus1 = from s in allStudent where s.Name == "王二" select new { s.Name, s.Age }; //Lanmbda表達式 var stus2 = allStudent.Where(t => t.Name == "王二").Select(t => new { t.Name, t.Age }); }public class Student { public string Name { set; get; } public int Age { set; get; } public Student(string name, int age) { this.Name = name; this.Age = age; } } Lambda確實比Linq表達式更加優雅 Linq表達式的select不能省略 //Linq var students1 = from t in db.Students where t.Name == "張三" select t; //Lambda var students2 = db.Students .Where(t => t.Name == "張三");Linq表達式必須需要括號包裹起來才能取結果集 //Linq var students1 = (from t in db.Students where t.Name == "張三" select t).ToList(); //Lambda var students2 = db.Students .Where(t => t.Name == "張三") .ToList();

?

什么時候使用Linq?
通過上面的對比,好像Linq一文不值了。no,不是這樣的。
比如下面幾種情況我們就可以選擇使用Linq:
例一:(本例適用于Linq to Object 和 沒有建主外鍵的EF查詢)
Lambda中的Join需要傳四個參數表達式,是不是有點暈了。。。

var list1 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "張三" }, { "4", "張三" } }; var list2 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "李四" }, { "4", "張三" } };//Linq var obj1 = from l1 in list1 join l2 in list2 on l1.Key equals l2.Key select new { l1, l2 }; //Lambda var obj = list1.Join(list2, l1 => l1.Key, l2 => l2.Key, (l1, l2) => new { l1, l2 });

?

例二:
Lambda需要區分OrderBy、ThenBy有沒有覺得麻煩

//Linq var obj1 = from l1 in list1 join l2 in list2 on l1.Key equals l2.Key orderby l1.Key, l2.Key descending select new { l1, l2 }; //Lambda 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 });

?


總覺得Linq更多的只是為了照顧那些寫慣了sql的程序員。

聯接查詢(內聯、左聯、交叉聯)

關于聯接查詢使用Linq會更合適一些這個上面已經說了。
接下來我們寫內聯、左聯、交叉聯的Linq和對應的Lambda代碼。(目的:可能有些人不會,同時在這里也給自己做個備忘)
內聯:

var list1 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "張三" }, { "4", "張三" } }; var list2 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "李四" }, { "4", "張三" } }; //Linq查詢 var ojb2 = (from l1 in list1 join l2 in list2 on l1.Key equals l2.Key select new { l1, l2 }).ToList(); //Lambda查詢 var obj = list1.Join(list2, l1 => l1.Key, l2 => l2.Key, (l1, l2) => new { l1, l2 }).ToList();

?

左聯:

var list1 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "張三" }, { "4", "張三" } }; var list2 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "李四" }, { "4", "張三" } }; //Linq查詢 var ojb2 = (from l1 in list1 join l2 in list2 on l1.Key equals l2.Key into list from l2 in list.DefaultIfEmpty() select new { l1, l2 }).ToList(); //Lambda查詢 var obj = list1.GroupJoin(list2, l1 => l1.Key, l2 => l2.Key, (l1, l2) => new { l1, l2=l2.FirstOrDefault() }).ToList();

?

交叉聯:

var list1 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "張三" }, { "4", "張三" } }; var list2 = new Dictionary<string, string> { { "1", "張三" }, { "2", "李四" }, { "3", "李四" }, { "4", "張三" } }; //Linq查詢 var ojb2 = (from l1 in list1 from l2 in list2 select new { l1, l2 }).ToList(); //Lambda查詢 var obj = list1.SelectMany(l1 => list2.Select(l2 => new { l1,l2})).ToList();

?

FROM :http://www.cnblogs.com/zhaopei/p/5746414.html

轉載于:https://www.cnblogs.com/chunhui212/p/5899158.html

總結

以上是生活随笔為你收集整理的Linq表达式和Lambda表达式用法对比的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 四虎婷婷| 永久免费看mv网站入口亚洲 | 日韩影视在线 | 欧美天堂网站 | 欧美怡春院 | 久久毛片网站 | 免费看日批 | 探花视频在线版播放免费观看 | 日日骚网 | www亚洲天堂 | 欧美a网站 | 亚洲蜜桃精久久久久久久久久久久 | 97伊人网| 色诱久久av| 欧美xxxxx精品 | 精品人妻av一区二区三区 | 亚洲性欧美 | 中文在线www | 岛国av在线免费观看 | 黑森林福利视频导航 | www裸玉足久久久 | 国产suv精品一区二区33 | 日韩精品一区二区三区在线 | 97激情| a毛片| 成人欧美在线视频 | 97人人艹| 欧美日韩一二 | 污污网站在线观看 | 六月丁香综合 | 精品视频一二 | 成人国产三级 | 国产精选视频 | 成人手机看片 | 国产日韩欧美视频 | 国产精品久久久久久久9999 | 裸体一区二区三区 | 久久久久五月天 | av鲁丝一区鲁丝二区鲁丝三区 | 国产裸体美女永久免费无遮挡 | 波多野在线视频 | 久久天天东北熟女毛茸茸 | 91色噜噜| 天天毛片 | 亚洲精品你懂的 | 国产精品视频福利 | 免费观看黄色一级视频 | julia一区二区三区在线观看 | 欧美成人久久 | 国产传媒国产传媒 | 张柏芝亚洲一区二区三区 | av大片在线观看 | 97自拍网 | 日韩精品视 | 成人听书哪个软件好 | 日本午夜三级 | 日韩和欧美的一区二区 | 一区二区三区在线免费观看视频 | 亚洲av综合色区无码一区 | 久久综合亚洲精品 | 久久免费在线观看视频 | av解说在线观看 | 黄色免费看网站 | 九九热这里有精品 | 久久影院中文字幕 | 中文字av| 毛片一卡二卡 | 欧美日韩蜜桃 | 免费人妻精品一区二区三区 | 蜜桃精品视频 | 日韩精品在线一区二区三区 | 91精品国产高清一区二区三蜜臀 | 国产91丝袜在线播放九色 | 亚洲欧洲无码一区二区三区 | 久久国内精品 | 亚洲视频h | 亚洲国产不卡 | 日日夜夜操操操 | 精品视频一区在线观看 | 国产男女猛烈无遮挡免费视频动漫 | 又色又爽又黄18网站 | 中文字幕在线视频免费 | free黑人多人性派对hd | 欧美日韩欧美 | 极品美女扒开粉嫩小泬 | 99re99| 涩涩精品| 最近最新mv字幕观看 | 亚洲天堂一区在线观看 | 亚洲人做受 | 免费看一级片 | 日韩亚洲区 | 美女一区 | 久久精品一区二区在线观看 | 日韩欧美国产亚洲 | 成人免费久久 | 99国产精品久久久久99打野战 | 狠狠躁夜夜躁人 | 成人深夜影院 |