一、Linq應用場景
linq的語法通過System.Linq下面的Enumerable類提供支持,也就是說,只要是實現了IEnumerable<T>的對象都可以使用Linq的語法來查詢。LINQ定義了大約40個查詢操作符,如select、from、in、where、group by 以及order by,通過查看源代碼,實際上linq為IEnumerable<TSource>實現了一系列的擴展方法。
二、Linq中的關鍵字
今天這里主要討論order by 和group by的使用
1.linq order by(多列)
var list= from r in Transactions where r.ZhiFuQuDao== "支付寶" orderby r.HospitalID ,r.Moneys descending select r;
2.Lambda表達式 實現 order by(多列)
var list = Transactions. OrderBy(r => r.HospitalID). ThenBy(r => r.Type). ThenByDescending(r => r.Moneys ). Take(10);
3.linq group by(多列)
1.簡單的實現方式:
var list = from T in Transactions group T by T.ZhiFuQuDao into g select g;

語句描述:Linq使用Group By 統計交易流水的支付渠道方式(支付寶或微信等等)。
說明:這里將查詢結果 命名為g,一旦重新命名,T 的作用域就結束了,所以,最后select時,只能select g。
2.分類統計各個分類的最大值(Max)、最小值(Min)、平均值(Average)和求和(Sum)
var q = from T in Transactions group T by T.ZhiFuQuDao into g select new { g.Key, MaxPrice = g.Max(T => T.Moneys) };

語句描述:Linq使用Group By和Max查找交易流水每種支付渠道的最高金額的一筆交易。
說明:先按ZhiFuQuDao進行分類,然后獲取每個分類的最高一筆交易金額賦給MaxPrice。最小值、平均值和求和實現和此類似,替換關鍵之即可
3.多列(Multiple Columns)
var dateQDList = from T in hisDZD group T by new { T.JiaoYiRQ, T.JiaoYiQDMC } into g select new { g.Key.JiaoYiRQ, g.Key.JiaoYiQDMC };
語句描述:Linq使用Group By按交易日期和交易渠名稱將his對賬單進行分組統計。
效果圖如下:
4. lambda group by(多列帶表達式)
var dateQDList = hisDZD.GroupBy(t => new
{
JiaoYiRQ=Convert.ToDateTime(t.JiaoYiRQ).ToString("yyyy-MM-dd"),
t.JiaoYiQDMC
}) .Select(g=>new {
JiaoYiRQ = Convert.ToDateTime(g.Key.JiaoYiRQ).ToString("yyyy-MM-dd"),
JiaoYiQDMC = g.Key.JiaoYiQDMC
}).ToList();

語句描述:Linq使用Group By按交易日期和交易渠名稱將his對賬單進行分組統計。
效果:同上
說了這么多不知道大家有沒有理解和使用呢
最后留兩道題給大家,看大家是否能學以致用
1:給“cdabe” 排序;
2:給"ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB"將含有相同字母的進行分組並排序。