lambda In的用法: lambda表達式查詢沒有IN這個方法,可以變通一下,in查詢的數組是否包含在映射對象裡面的集合里: 如下代碼: SQL:select * from db where DepartmentID in(departmentIDs) lambda groupby的用法 計算各 ...
lambda In的用法:
lambda表達式查詢沒有IN這個方法,可以變通一下,in查詢的數組是否包含在映射對象裡面的集合里:
如下代碼:
var departmentIDs = input.DepartmentIDs.Split(',').Select(s => int.Parse(s)).ToList();//這是從前端傳進來的字元串數組,需要轉換成int db.whereLambda.Add(d => departmentIDs.Contains(d.DepartmentID));//whereLambda是where條件裡面的lamdba表達式,db是上下文數據。這句話就是實體集合是否包含departmentIDs 。
SQL:select * from db where DepartmentID in(departmentIDs)
lambda groupby的用法
計算各種統計在資料庫用group by
GROUP BY 語句用於結合合計函數,根據一個或多個列對結果集進行分組
然後計算,在資料庫計算統計用的非常多
我們這裡用lambda 表達式查詢也能實現
//單個分組GROUP BY var rels= rel.GroupBy(a => a.PlatformName).Select(s=>new MarketInfoInvalidRatioExtend
{ BusinessName = s.Key,AssignNum=s.Sum(c=>c.AssignNum),InvalidNum=s.Sum(I=>I.InvalidNum)} ).ToList(); //多個分組GROUP BY var rel = db.FindList(10000, db.whereLambda, b => b.MKBTID, true).GroupBy(g => new
{ g.PlatformName, g.BusinessName, g.DepartmentName, g.ResourceName }).Select(s=>new MarketInfoInvalidRatioExtend
{ PlatformName=s.Key.PlatformName, BusinessName=s.Key.BusinessName, DepartmentName=s.Key.DepartmentName, ResourceName=s.Key.ResourceName,
AssignNum =s.Sum(w=>w.AssignNum), EmptyNum = s.Sum(w => w.EmptyNum), BlacklistNum=s.Sum(w=>w.BlacklistNum), ErrorNum= s.Sum(w => w.ErrorNum),
InvalidNum=s.Sum(w=>w.InvalidNum) });
註意的是Select NEW 一個新實體的本身不能與查詢的集合實體相同,否則會報錯“在 LINQ to Entities 查詢中無法構造實體或複雜類型""”。