在開發時發現別人的代碼使用到了LINQ十分便捷且清晰,這里記錄一下常用LINQ和對應的使用。參考鏈接:LINQ 菜鳥教程
使用的學生類和字符串用于測試
public class Student
{public int StudentID;public string StudentName;public int Age;
}Student[] studentArray = { new Student() { StudentID = 1, StudentName = "John", Age = 18 },new Student() { StudentID = 2, StudentName = "Steve", Age = 21 },new Student() { StudentID = 3, StudentName = "Bill", Age = 25 },new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 },new Student() { StudentID = 5, StudentName = "Ron" , Age = 31 },new Student() { StudentID = 6, StudentName = "Chris", Age = 17 },new Student() { StudentID = 7, StudentName = "Rob",Age = 19 },};IList<string> stringList = new List<string>() { "C# Tutorials","VB.NET Tutorials","Learn C++","MVC Tutorials" ,"Java" };
Where過濾
1.使用LINQ查找青少年學生
Students = studentArray.Where(s => s.Age >= 18 && s.Age <= 25).ToList();
2.使用LINQ查找名字為Bill的第一位學生
st1 = studentArray.Where(s => s.StudentName == "Bill").FirstOrDefault();
更加簡便的寫法:
其中對于 FirstOrDefault 和 First 的區別:FirstOrDefault 找不到返回默認值,First 找不到拋出異常
st1 = studentArray.FirstOrDefault(s => s.StudentName == "Bill");
st1 = studentArray.First(s => s.StudentName == "Bill");
3.使用LINQ查找StudentID為5的學生
st2 = studentArray.FirstOrDefault(s => s.StudentID == 5);
Single 和First 的區別:Single如果查找的元素不唯一會引發異常。Single會迭代所有元素,First滿足第一個元素就返回
st2 = studentArray.SingleOrDefault(s => s.StudentID == 5);
SingleOrDefault和Single區別:類似于 FirstOrDefault 和 First 的區別同上,這里不多贅述
st2 = studentArray.Single(s => s.StudentID == 5);
Select投射
1.查詢包含 Tutorials 的字符串
strResult = stringList.Where(s => s.Contains("Tutorials")).ToList();
2.為字符串數組加 【】 包含起來
strResult = stringList.Select(s => "【" + s + "】").ToList();
3.篩選 Tutorials 的字符串,添加 【】 輸出
strResult = stringList.Where(s => s.Contains("Tutorials")).Select(s => "【" + s + "】").ToList();
OrderBy排序
1.根據年齡進行排序
Students = studentArray.OrderBy(s => s.Age).ToList();