2010-11-23 25 views
1

Je suis en train de changer un peu SQL dans Linq-à-Sql, mais j'ai la ligne suivante dans SQL que je ne suis pas sûr de savoir comment convertir:IsNull intérieur déclaration Somme dans LINQ to sql

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

J'ai donc écrit jusqu'à présent le regroupement Linq comme suit:

 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 

J'ai pensé à utiliser le mot-clé let, et essayé d'utiliser grp.Sum ont lutté comme il y a le IsNull dans la requête.

Toute aide pour convertir cette requête serait grandement appréciée!

Richard

Répondre

0

d'aveugle de frappe (sans IntelliSense: D), mais les éléments suivants doivent travailler:

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) 
}; 
+0

C'est parfait! Je ne pensais pas que l'on pouvait faire des conditions à l'intérieur de Sommes etc. Merci pour l'aide! – Richard