有个这样的linq,只看加粗橙色部分
var query = from detail in _dbContext.YhTransferHourseDetail
join transfer in _dbContext.YhTransferHourse on detail.NumericalOrder equals transfer.NumericalOrder
where detail.BatchId == command.BatchId
select transfer.IsIn ? detail.BoarCount + detail.SowCount : -(detail.BoarCount + detail.SowCount);
生成的sql是这样的
SELECT SUM(CASE
WHEN `y0`.`IsIn` THEN `y`.`BoarCount` + `y`.`SowCount`
ELSE -`y`.`BoarCount` + `y`.`SowCount`
END)
FROM `yh_transferhoursedetail` AS `y`
INNER JOIN `yh_transferhourse` AS `y0` ON `y`.`NumericalOrder` = `y0`.`NumericalOrder`
WHERE `y`.`BatchID` = @__command_BatchId_0
本来想计算-(a+b),但变成了-a+b。小括号没了。
翻微软说明没找到明确说明,找到一篇顺序运算符 (LINQ to SQL)。尽量不要用顺序运算符吧。