IsNull внутри оператора Sum в Linq to Sql - PullRequest
1 голос
/ 23 ноября 2010

Я пытаюсь изменить 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.

Любая помощь в преобразовании этого запроса будет принята с благодарностью!

Richard

1 Ответ

0 голосов
/ 23 ноября 2010

Печатание вслепую (без 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)
};
...