LINQ投影操作符Select與限制操作符where介紹
一、什么是LINQ?它可以用來(lái)做什么
語(yǔ)言集成查詢(xún)(Language Integrated Query,LINQ)是一系列標(biāo)準(zhǔn)查詢(xún)操作符的集合,這些操作符幾乎對(duì)每一種數(shù)據(jù)源的導(dǎo)航、過(guò)濾和執(zhí)行操作都提供了底層的基本查詢(xún)架構(gòu)。
LINQ可查詢(xún)的數(shù)據(jù)源包括XML(可使用LINQ TO XML)、關(guān)系數(shù)據(jù)(使用LINQ TO SQL,及先前的DLINQ)、ADO.NET DataSet(使用LINQ TO DataSet),以及內(nèi)存中的數(shù)據(jù)。
二、投影操作符:Select
Select操作符對(duì)單個(gè)序列或集合中的值進(jìn)行投影。所謂投影,比如有一個(gè)數(shù)據(jù)集,想用LINQ語(yǔ)法去操作數(shù)據(jù)集,會(huì)寫(xiě)一個(gè)LINQ的表達(dá)式,表達(dá)式會(huì)把數(shù)據(jù)集合中的數(shù)
據(jù)簡(jiǎn)單的投影到一個(gè)變量中,并且可以通過(guò)這個(gè)變量去篩選數(shù)據(jù)。
示例:
Employees類(lèi)
public class Employees { public Guid Id { get; set; } public string Name { get; set; } public int Sex { get; set; } public string CompanyName { get; set; } }
class Program { static void Main(string[] args) { //使用集合初始化器給集合賦值 List<Employees> emp = new List<Employees> { new Employees(){Id=Guid.NewGuid(),Name="張三",Sex=0,CompanyName="xx技術(shù)有限公司"}, new Employees(){Id=Guid.NewGuid(),Name="李四",Sex=0,CompanyName="xx培訓(xùn)"}, new Employees(){Id=Guid.NewGuid(),Name="王五",Sex=0,CompanyName="xx集團(tuán)"} }; //查詢(xún)語(yǔ)法:不能省略最后的select var query = (from p in emp where p.Name.StartsWith("王") select p).FirstOrDefault(); //查詢(xún)方法:設(shè)計(jì)到Lambda表達(dá)式,全部返回 可以省略最后的select 延遲加載 var query1 = emp.Where(p => p.Name.StartsWith("王")).Select(e => new { e.Name,e.CompanyName}); //查詢(xún)方法:返回匿名類(lèi) var query2 = emp.Where(p => p.Name.StartsWith("王")).Select(p => p); foreach (var item in query1) { Console.WriteLine(item.Name); } Console.ReadKey(); } }
三、限制操作符where
where是限制操作符,它將過(guò)濾標(biāo)準(zhǔn)應(yīng)用在序列上,按照提供的邏輯對(duì)序列中的數(shù)據(jù)進(jìn)行過(guò)濾。
where操作符不啟動(dòng)查詢(xún)的執(zhí)行。當(dāng)開(kāi)始對(duì)序列進(jìn)行遍歷時(shí)才開(kāi)始執(zhí)行,此時(shí)過(guò)濾條件將被應(yīng)用到查詢(xún)中。
示例:
//where限制操作符:使用延遲加載 var q = teachers.SelectMany(p => p.Students).Where(s => s.Score < 60).Select(a => new { name = a.Name }); foreach (var item in q) { Console.WriteLine("姓名:"+item.name); }
到此這篇關(guān)于LINQ投影操作符Select與限制操作符where的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# Base 64 編碼/解碼實(shí)現(xiàn)代碼
這篇文章主要介紹了C# Base 64 編碼/解碼實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-02-02C#拼接SQL語(yǔ)句 用ROW_NUMBER實(shí)現(xiàn)的高效分頁(yè)排序
C#拼接SQL語(yǔ)句,SQL Server 2005+,多行多列大數(shù)據(jù)量情況下,使用ROW_NUMBER實(shí)現(xiàn)的高效分頁(yè)排序2012-05-05關(guān)于C#基礎(chǔ)知識(shí)回顧--反射(一)
其實(shí)說(shuō)白了,反射就是能知道我們未知類(lèi)型的類(lèi)型信息這么一個(gè)東西.沒(méi)什么神秘可講!反射的核心是System.Type。System.Type包含了很多屬性和方法,使用這些屬性和方法可以在運(yùn)行時(shí)得到類(lèi)型信息2013-07-07c# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇c# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02