【问题标题】:Convert Query to Lambda Expression将查询转换为 Lambda 表达式
【发布时间】:2015-04-14 02:25:41
【问题描述】:
如何为以下 SQL 查询编写 lambda 表达式:
Sales_This_Month = SUM(CASE
WHEN Trxn_Type_Code IN ('S','PS','RTN','GS','GR')
AND YEAR(Trxn_Date) = YEAR(GETDATE())
THEN Amount
ELSE 0
END)
【问题讨论】:
标签:
sql
linq
lambda
sql-to-linq-conversion
【解决方案1】:
您可以在数据源对象上应用以下 Lambda 表达式。这里salesData 是您的数据源对象。想知道更多here在哪里。
var result = salesData.Where(x=> (IList<string>)new [] { "S","PS","RTN","GS","GR" }).Contains(x.Trxn_Type) && Trxn_Date.Year == DateTime.Now.Year).Sum(x=>x.Amount);
【解决方案2】:
尝试以下方法:
var result = salesData.Select(d => d.Where(x=> (IList<string>)new [] { "S","PS","RTN","GS","GR" })
.Contains(x.Trxn_Type) && Trxn_Date.Year == DateTime.Now.Year)).Count!=0?
d.Where(x=> (IList<string>)new [] { "S","PS","RTN","GS","GR" })
.Contains(x.Trxn_Type) && Trxn_Date.Year == DateTime.Now.Year).Sum(x=>x.Amount) : 0);