LINQ投影操作符Select與限制操作符where介紹
一、什么是LINQ?它可以用來做什么
語言集成查詢(Language Integrated Query,LINQ)是一系列標(biāo)準(zhǔn)查詢操作符的集合,這些操作符幾乎對每一種數(shù)據(jù)源的導(dǎo)航、過濾和執(zhí)行操作都提供了底層的基本查詢架構(gòu)。
LINQ可查詢的數(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操作符對單個(gè)序列或集合中的值進(jìn)行投影。所謂投影,比如有一個(gè)數(shù)據(jù)集,想用LINQ語法去操作數(shù)據(jù)集,會(huì)寫一個(gè)LINQ的表達(dá)式,表達(dá)式會(huì)把數(shù)據(jù)集合中的數(shù)
據(jù)簡單的投影到一個(gè)變量中,并且可以通過這個(gè)變量去篩選數(shù)據(jù)。
示例:
Employees類
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)"} }; //查詢語法:不能省略最后的select var query = (from p in emp where p.Name.StartsWith("王") select p).FirstOrDefault(); //查詢方法:設(shè)計(jì)到Lambda表達(dá)式,全部返回 可以省略最后的select 延遲加載 var query1 = emp.Where(p => p.Name.StartsWith("王")).Select(e => new { e.Name,e.CompanyName}); //查詢方法:返回匿名類 var query2 = emp.Where(p => p.Name.StartsWith("王")).Select(p => p); foreach (var item in query1) { Console.WriteLine(item.Name); } Console.ReadKey(); } }
三、限制操作符where
where是限制操作符,它將過濾標(biāo)準(zhǔn)應(yīng)用在序列上,按照提供的邏輯對序列中的數(shù)據(jù)進(jìn)行過濾。
where操作符不啟動(dòng)查詢的執(zhí)行。當(dāng)開始對序列進(jìn)行遍歷時(shí)才開始執(zhí)行,此時(shí)過濾條件將被應(yīng)用到查詢中。
示例:
//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的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# Base 64 編碼/解碼實(shí)現(xiàn)代碼
這篇文章主要介紹了C# Base 64 編碼/解碼實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-02-02C#拼接SQL語句 用ROW_NUMBER實(shí)現(xiàn)的高效分頁排序
C#拼接SQL語句,SQL Server 2005+,多行多列大數(shù)據(jù)量情況下,使用ROW_NUMBER實(shí)現(xiàn)的高效分頁排序2012-05-05c# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的簡單實(shí)例
下面小編就為大家?guī)硪黄猚# 實(shí)現(xiàn)子窗口關(guān)閉父窗口也關(guān)閉的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02