LINQ投影操作符Select與限制操作符where介紹
一、什么是LINQ?它可以用來做什么
語言集成查詢(Language Integrated Query,LINQ)是一系列標準查詢操作符的集合,這些操作符幾乎對每一種數(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操作符對單個序列或集合中的值進行投影。所謂投影,比如有一個數(shù)據(jù)集,想用LINQ語法去操作數(shù)據(jù)集,會寫一個LINQ的表達式,表達式會把數(shù)據(jù)集合中的數(shù)
據(jù)簡單的投影到一個變量中,并且可以通過這個變量去篩選數(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集團"}
};
//查詢語法:不能省略最后的select
var query = (from p in emp where p.Name.StartsWith("王") select p).FirstOrDefault();
//查詢方法:設(shè)計到Lambda表達式,全部返回 可以省略最后的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是限制操作符,它將過濾標準應(yīng)用在序列上,按照提供的邏輯對序列中的數(shù)據(jù)進行過濾。
where操作符不啟動查詢的執(zhí)行。當開始對序列進行遍歷時才開始執(zhí)行,此時過濾條件將被應(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#實現(xiàn)利用泛型將DataSet轉(zhuǎn)為Model的方法
這篇文章主要介紹了C#實現(xiàn)利用泛型將DataSet轉(zhuǎn)為Model的方法,實例分析了C#泛型的相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
基于Unity Line Renderer組件的常用屬性說明
這篇文章主要介紹了基于Unity Line Renderer組件的常用屬性說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
C# networkcomms 3.0實現(xiàn)模擬登陸總結(jié)
這篇文章主要介紹了C# networkcomms 3.0實現(xiàn)模擬登陸總結(jié),需要的朋友可以參考下2017-06-06
C#提示:“在證書存儲區(qū)中找不到清單簽名證書”的解決方法
這篇文章主要介紹了C#提示:“在證書存儲區(qū)中找不到清單簽名證書”的解決方法,分析了幾種常見的解決方案供大家選擇使用,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01
c#?Task.Wait()與awaiat?Task異常處理的區(qū)別說明
這篇文章主要介紹了c#?Task.Wait()與awaiat?Task異常處理的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06

