一、什么是Linq?
LINQ即Language Integrated Query(語言集成查詢),LINQ是集成到C#和Visual Basic.NET這些語言中用于提供查詢數據能力的一個新特性。
LINQ是一種用來進行數據訪問的編程模型,Linq可以用相同的語法訪問不同的數據源,比如xml、數據庫、注冊表、事件日志等。
二、Linq包含哪些部分?
1、Linq to Sql組件:可以查詢關系型數據庫的數據,并可以提供其他操作,如檢索、插入、修改、刪除、排序、聚合、分區等。
2、Linq to DataSet組件:查詢DataSet對象中的數據。
3、Linq to Object組件:可以查詢IEnumerable或是IEnumerable 集合對象,即能夠查詢任何可以枚舉的集合,如數組(Array和ArrayList)、泛型字典Dictinary等,以及用戶自定義的集合,而不需要使用Linq提供程序或API。
4、Linq to XML組件:查詢和操作XML結構的數據。
5、Linq to Entities:是 Entity Framework 的一部分并且取代 LINQ to SQL 作為在數據庫上使用 LINQ 的標準機制。Entity Framework 是行業領先的對象-關系映射(ORM)系統。可以和多種數據庫一起使用,并支持各種靈活、復雜的數據模型。
三、Linq的一些用法
1、簡單的LINQ查詢
static void Main(string[] args)
{
int[] marks = { 60, 77, 82, 46, 59, 98, 100, 84 };//定義一個數組
var good = from m in marks//使用LINQ找到所有數值大于等于60的數字
where m >= 60
select m;
foreach (int mark in good)//循環每一個結果
{
Console.WriteLine(mark);//輸出結果
}
}
2、使用Lambda表達式的LINQ查詢
static void Main(string[] args)
{
int[] marks = { 60, 77, 82, 46, 59, 98, 100, 84 };
var good = marks.Where(m => m >= 60);//使用Lambda表達式查詢數值大于等于60的數字
foreach (int mark in good)//循環每一個結果
{
Console.WriteLine(mark);//輸出結果
}
}
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 //調用對象的方法
select s.Name;
foreach (string name in names)//循環輸出結果
{
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、容易上手,學習成本低
2、可以很大程度上減少代碼量。
3、更快開發錯誤更少的應用程序。
4、可以很容易的合并數據源。
5、讓新開發者開發效率更高。
6、任何對象或數據源都可以定制實現Linq適配器,為數據交互帶來真正方便。
歡迎關注我的公眾號(同步更新文章):DoNet技術分享平臺
閱讀原文