IsNull在Linq中的Sum语句内部转换为Sql

时间:2010-11-23 11:24:00

标签: linq-to-sql sum isnull

我正在尝试将一些SQL更改为Linq-to-Sql,但是我在SQL中有以下行,我不确定如何转换:

SUM(Quantity  * IsNull(ExchangeRate,1) * Factor ) 

所以我到目前为止编写了Linq分组如下:

        var items = from item in _dataContext.GetTable<Trade>()
                    group item by new {item.Curve}
                    into grp
                    select new Model.Position
                               {

                                   Curve = grp.Key.Curve,
                                   Value = ... "That line here"
                               };
        return item

我想过使用let关键字,并尝试使用grp.Sum一直在努力,因为查询中存在IsNull。

非常感谢任何转换此查询的帮助!

理查德

1 个答案:

答案 0 :(得分:0)

打字盲(没有intellisense:D)但以下应该有效:

var items = from item in _dataContext.GetTable<Trade>()
group item by new { item.Curve } into grp
select new Model.Position
{
    Curve = grp.Key.Curve,
    Value = grp.Sum(i => i.Quantity * (i.ExchangeRate.HasValue ? i.ExchangeRate.Value : 1) * i.Factor)
};