今天來寫寫LinQ讀取單筆資料的方式!
這也是很常用的方法之一
首先是最常出現的,讀取第一筆資料/最後一筆資料
分別是使用 First() 跟 Last() 兩種方法
他們也有姊妹方法,分別是 FirstOrDefault() 跟 LastOrDefault() 兩種
差別在於,前者讀不到資料時會回傳null,後者會回傳default(T)
其餘都沒有差別
另外,First()跟Last()的方法可以選擇是否要有條件判斷
如果有條件判斷的情況下,他就會依據條件排序後的結果回傳第一筆/最後一筆資料
順道說一下條件判斷的方法可以使用 Contains()
可以判斷集合內有沒有符合的元素
以下實際操作看看
/*因為我懶,所以Students是直接複製上一篇的
我相信大家不會介意的,說不定也沒有人會注意*/
var Students=new[]
{
new{name="Anne",score=87},
new{name="Bob",score=75},
new{name="Kevin",score=53},
new{name="Emma",score=89},
new{name="Steven",score=95}
};
//讀取
var firstContainA=Students.First(s=>s.name.Contains('a'));
//印出
Console.WriteLine("first name contains a name:{0}",firstContainA.name);
以上的程式,執行後妳會發現他印出的
居然是Emma!!!!!居然是Emma!!!!居然是Emma!!!
說好的Anne呢?!!?
好啦,可能只有我才會嚇這麼大跳...
那是因為LinQ本身是會區分大小寫的,所以我們必須讓他分不清楚大小寫
因此把程式修改成以下,就沒有問題囉
var firstContaine=Students.First(s=>s.name.ToLower().Contains('a'));
//暫時把所有英文都當成小寫吧~的催眠術^^^^^^^^^
另外,除了讀取最前後資料外,還有個直接讀取索引值資料的方法 ElementAt()
一樣有個姊妹方法 ElementAtOrDefault() (到底是多愛姊妹
那差別相信大家都很聰明,就不重複說明了
使用的方法非常簡單,以下簡單寫個兩行
var itemAtThree=Students.ElementAt(2);
Console.WriteLine("3rd name in Students ,name:{0}",itemAtThree.name);
小提醒是,索引值是從0開始,所以第三筆資料的索引值是2
這應該...已經算是廢話提醒了吧 哈哈
好~
今天的筆記就到此啦!!
下一章再紀錄一下Count(),Max(),Min(),Sum()...的用法