【发布时间】:2017-03-04 11:12:25
【问题描述】:
在 linq 查询中选择 case 语句。
这里是关于sql的查询:
select case when DATEDIFF(day,convert(varchar,Min([Order].CreatedOnUtc),101),convert(varchar,Max([Order].CreatedOnUtc),101)) = 0 then
Sum([Order].OrderSubtotal)
else
case when (DATEDIFF(day,convert(varchar,Min([Order].CreatedOnUtc),101),convert(varchar,Max([Order].CreatedOnUtc),101))/30) = 0 then Sum([Order].OrderSubtotal) else
Sum([Order].OrderSubtotal)/
(DATEDIFF(day,convert(varchar,Min([Order].CreatedOnUtc),101),convert(varchar,Max([Order].CreatedOnUtc),101))/30)
end
end as 'Account Value' from [order] where And Account.ID = @Act_ID
我在这里尝试代码:
var query = _orderRepository.Table;
query = query.Where(o => o.AccountId == accountId);
在查询中我得到了我的价值。
查询语句后我应该写什么? 我如何使用 linq 编写 case 语句???
【问题讨论】:
-
我已经在 stackoverflow 中查看了这个语句..但在我的情况下 DATEDIFF 有两个 case 语句..所以你能指导我吗??
-
var query = _orderRepository.Table; query = query.Where(o => o.AccountId == accountId); var MinDate = (from d in query select d.CreatedOnUtc).Min(); var MaxDate = (from d in query select d.CreatedOnUtc).Max(); var rateSum = (query.Sum(d => d.OrderSubtotal)); query = query.Where(c => (DbFunctions.DiffDays(MinDate, MaxDate) == 0) ? "rateSum" : (DbFunctions.DiffDays(MinDate, MaxDate) / 30 == 0) ? "rateSum" ? "(rateSum / (DbFunctions.DiffDays(MinDate, MaxDate) / 30)");
-
先生,我正在尝试这个,但出现错误你能帮我解决吗
-
你的问题解决了吗?
标签: sql sql-server linq