lambda表達式查詢經驗:IN 和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 查詢中無法構造實體或復雜類型""”。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM