過去寫程式在查詢比對Array或List中內容時總習慣又for或foreach迴圈
但發現LINQ語法是個更簡潔又好懂好維護的方法,習慣了SQL的人一定會覺得親切
立馬筆記一下
要使用linq要記得先using System.Linq;
語法如下
var q =
from member in memberList // List中的item, 跟foreach member in memberList意思一樣
let score = member.score[0]+member.score[1]+member.score[2] // 可把複雜的計算用變數表示
where score >= 240 // 條件
where member.zz.StartsWith( "A" ) || member.zz.StartsWith( "a" ) // 寫成多行就是AND的意思, 也可用OR
orderby member.id ascending // 排序: ascending / descending
select member; // 亦可output其他內容 e.g. select member.FirstName + " " + member.LastName
最後看你要把內容存成Array或List均可 List<string> szMemberName = q.toList();
另外還有group的功能可以使用
var q2 =
from member in member List
group member by member.LastName[0] into groupInLastName
orderby groupInLastName.Key // Key就是上一行的member.LastName[0]
select member;
foreach (var groupInLastName in q2) {
...
}
join來不及寫到,之後再補
reference:
- https://docs.microsoft.com/zh-tw/dotnet/csharp/language-reference/keywords/query-keywords
- https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/concepts/linq/walkthrough-writing-queries-linq