所以從現在開始好好的來練習一下之前一知半解的LINQ
基本查詢
Group (群組)
Join (合併)
OrderBy (排序)
查詢順序
基本查詢
From <資料來源> → Where <查詢條件> →Select < 資料欄位>
ex
var lists = new string[] { "aaa", "ttt", "ccc" };
var result = from s1 in lists where s1 == "aaa" select s1;
進階查詢
From <資料來源>
→ Where <查詢條件> →Group <群組條件>→JOIN<合併查詢條件>→ ORDER BY <排序條件>
→ Select < 資料欄位>
Group (群組)
person[] persons = new person[]
{
new person { name="dad",age=18,add="NY"},
new person { name="ccc",age=16,add="TW"},
new person { name="zzz",age=16,add="NY"},
new person { name="rrr",age=18,add="TW"},
new person { name="ddd",age=20,add="NY"}
};
var p = from o in persons
group o by o.add into g
select new { add = g.Key, persons = g };
foreach (var s in p)
{
Console.WriteLine("Group : {0}", s.add);
foreach (var s1 in s.persons)
{
Console.WriteLine(s1.name);
}
}
流程:把以O.add的群組結果先放到g裡面 (into g),再利用select new 產生一個物件提供查詢
由於g是以add為群組依據,所以視為key值,而person就拿來放群組後的結果了
Join (合併)
var p1 = new[]{new {Name = "code64", Address = "Tai"},
new {Name = "tom", Address = "pen"},
new {Name = "jeff", Address = "NY"}};
var p2 = new[]{new {Name = "code64", Title = "Manager"},
new {Name = "tom", Title = "Director"},
new {Name = "jeff", Title = "Programmer"}};
var p6 = from s in p1
join s1 in p2 on s.Name equals s1.Name
select new
{
name = s.Name,
address = s.Address,
title = s1.Title
};
foreach (var v in p6)
{
Console.WriteLine("NAME:{0} address:{1} title:{2}",v.name,v.address,v.title);
}
join相對比較好解釋,比較要特別注意的是,在SQL中join 是利用 = 來做資料表的合併對應
在LINQ中則是以 equals取代 = 符號,要特別注意
OrderBy (排序)
string[] list = new string[] { "111111", "222222", "333333" };
var listP = from o in list orderby o descending select o;
foreach (var item in listP)
{
Console.WriteLine(item);
}
在LINQ中 OrderBy是單一個詞喔,跟SQL的 Order By 拆開來是不一樣的
,而且要明確指示要ascending (升冪) 或者是 descending(降冪)排列方式
沒有留言:
張貼留言