一摩梧、什么是Linq?
LINQ即Language Integrated Query(語言集成查詢)物延,LINQ是集成到C#和Visual Basic.NET這些語言中用于提供查詢數(shù)據(jù)能力的一個新特性。
LINQ是一種用來進(jìn)行數(shù)據(jù)訪問的編程模型仅父,Linq可以用相同的語法訪問不同的數(shù)據(jù)源叛薯,比如xml、數(shù)據(jù)庫笙纤、注冊表耗溜、事件日志等。
二省容、Linq包含哪些部分抖拴?
1、Linq to Sql組件:可以查詢關(guān)系型數(shù)據(jù)庫的數(shù)據(jù),并可以提供其他操作阿宅,如檢索候衍、插入、修改洒放、刪除蛉鹿、排序、聚合往湿、分區(qū)等妖异。
2、Linq to DataSet組件:查詢DataSet對象中的數(shù)據(jù)领追。
3他膳、Linq to Object組件:可以查詢IEnumerable或是IEnumerable 集合對象,即能夠查詢?nèi)魏慰梢悦杜e的集合绒窑,如數(shù)組(Array和ArrayList)矩乐、泛型字典Dictinary等,以及用戶自定義的集合回论,而不需要使用Linq提供程序或API。
4分歇、Linq to XML組件:查詢和操作XML結(jié)構(gòu)的數(shù)據(jù)傀蓉。
5、Linq to Entities:是 Entity Framework 的一部分并且取代 LINQ to SQL 作為在數(shù)據(jù)庫上使用 LINQ 的標(biāo)準(zhǔn)機(jī)制职抡。Entity Framework 是行業(yè)領(lǐng)先的對象-關(guān)系映射(ORM)系統(tǒng)葬燎。可以和多種數(shù)據(jù)庫一起使用缚甩,并支持各種靈活谱净、復(fù)雜的數(shù)據(jù)模型。
三擅威、Linq的一些用法
1壕探、簡單的LINQ查詢
static void Main(string[] args)
{
int[] marks = { 60, 77, 82, 46, 59, 98, 100, 84 };//定義一個數(shù)組
var good = from m in marks//使用LINQ找到所有數(shù)值大于等于60的數(shù)字
where m >= 60
select m;
foreach (int mark in good)//循環(huán)每一個結(jié)果
{
Console.WriteLine(mark);//輸出結(jié)果
}
}
2、使用Lambda表達(dá)式的LINQ查詢
static void Main(string[] args)
{
int[] marks = { 60, 77, 82, 46, 59, 98, 100, 84 };
var good = marks.Where(m => m >= 60);//使用Lambda表達(dá)式查詢數(shù)值大于等于60的數(shù)字
foreach (int mark in good)//循環(huán)每一個結(jié)果
{
Console.WriteLine(mark);//輸出結(jié)果
}
}
3郊丛、使用LINQ查詢對象集合
class Program
{
static void Main(string[] args)
{
List students = new List//申明Student對象的集合
{
new Student{ StudentID=1, Sex=true, Name="小明", Birthday=Convert.ToDateTime("1984-1-1")},
new Student{ StudentID=2, Sex=false, Name="小張", Birthday=Convert.ToDateTime("1983-5-1")},
new Student{ StudentID=3, Sex=true, Name="小王", Birthday=Convert.ToDateTime("1983-2-15")},
new Student{ StudentID=4, Sex=false, Name="小麗", Birthday=Convert.ToDateTime("1985-3-8")}
};
//接下來使用LINQ查詢所有年齡小于25歲的男性
var names = from s in students
where s.Sex == true&&s.GetAge()<25 //調(diào)用對象的方法
select s.Name;
foreach (string name in names)//循環(huán)輸出結(jié)果
{
Console.WriteLine(name);
}
}
}
public class Student ?//定義Student類
{
//以下是定義類中屬性
public string Name { get; set; }
public int StudentID { get; set; }
public bool Sex { get; set; }
public DateTime Birthday { get; set; }
//以下是定義類中的方法
public int GetAge()
{
return DateTime.Now.Year - Birthday.Year;
}
}
四李请、Linq有什么好處?
1厉熟、容易上手导盅,學(xué)習(xí)成本低
2、可以很大程度上減少代碼量揍瑟。
3白翻、更快開發(fā)錯誤更少的應(yīng)用程序。
4绢片、可以很容易的合并數(shù)據(jù)源滤馍。
5岛琼、讓新開發(fā)者開發(fā)效率更高。
6纪蜒、任何對象或數(shù)據(jù)源都可以定制實現(xiàn)Linq適配器衷恭,為數(shù)據(jù)交互帶來真正方便。
歡迎關(guān)注我的公眾號(同步更新文章):DoNet技術(shù)分享平臺