C#高階篇(4)
阿新 • • 發佈:2018-12-06
1.LINQ語句
建立一個類,在這個類中重寫了ToString方法,在直接列印類的時候列印類中的屬性
class Master { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public override string ToString() { return string.Format("Id:{0},Name:{1},Age{2}",Id,Name,Age); } }
在Main函式中使用var型的變數儲存結果,通過from先確定查詢的物件在那個集合,再通過where(&&新增並列條件)確定範圍,最後返回臨時儲存的值
class Program { static void Main(string[] args) { var master = new List<Master>() { new Master() {Id = 1,Name = "HM",Age = 18 }, new Master() {Id = 2,Name = "HR",Age = 20 }, new Master() {Id = 3,Name = "CEO",Age = 22 }, }; var res = from m in master where m.Age>18 select m; foreach(var temp in res) { Console.WriteLine(temp); } Console.ReadKey(); } }
上面是使用LINQ語句,下面是使用擴充套件方法。拓展方法呼叫Where方法傳遞一個方法,將這個方法將集合中的每一個元素作為引數,返回返回一個bool值,最後將符合的master變數返回。
class Program { static void Main(string[] args) { var master = new List<Master>() { new Master() {Id = 1,Name = "HM",Age = 18 }, new Master() {Id = 2,Name = "HR",Age = 20 }, new Master() {Id = 3,Name = "CEO",Age = 22 }, }; var res = master.Where(Test1); foreach(var temp in res) { Console.WriteLine(temp); } Console.ReadKey(); } static bool Test1(Master master) { if (master.Age > 18) { return true; } else return false; } }
2.聯合查詢
在查詢的得時候從多個表進行查詢,
eg:a、b表,a中的每一個物件會和b中的每一個物件匹配一邊
拓展方法
var res = master.SelectMany(m => kongfu, (m, k) => new { master = m, kongfu = k })
.Where(x => x.master.Name == x.kongfu.Name);
3.對結果進行排序
orderby 關鍵字 對關鍵字進行排序,後面加上descending,進行倒敘
4.Join on聯合查詢
將master中name和kongfu中name相同的進行連線
var res = from m in master
join k in kongfu on m.Name equals k.Name
select new { master1 = m, kongfu1 = k };
5.對結果進行分組操作into groups
var res = from k in kongfu
join m in master on k.Name equals m.Name
into groups
orderby groups.Count()
select new { kongfu = k, count = groups.Count() };
通過into進行分組
6.對結果進行分組操作
var res = from m in master
group m by m.Age into g
select new { count = g.Count(), g.Key };//g.key Key表示是按照那個屬性分的組
7.量詞操作符 any all
bool res1 = master.Any(m => m.Age > 18);
判斷集合中是否滿足某個條件,any是其中有一個滿足條件,返回true。