2010-05-17 7 views
1

Je suis nouveau à LINQ si présente ses excuses dès le départrequête Linq avec un conditionnel clause WHERE

je la requête Linq suivante: -

var OrdersByBranches = 
    from a in AllOrders 
    join b in AllBranchKeys 
     on a.BranchKey equals b.BranchKey 
    orderby a.Date 
    group a by new { a.Date, a.paymentMethod } into BranchOrderGrouped 
    select new 
    { 
     BranchOrderGrouped.Key.Date, 
     CurrencyAmount = BranchOrderGrouped.Sum(a => 
     a.CurrencyAmount), 
     BranchOrderGrouped.Key.paymentMethod 
    }; 

je dois inclure une clause where dans la requête ci-dessus .. Je n'ai pas essayé d'utiliser une instruction If Else et j'ai dupliqué la même requête ci-dessus avec BranchKeySelected est " un contenant une clause where et une NOT. Mais ... Quand je fais cela .. alors OrdersByBranches n'est pas disponible en dehors de l'instruction IF

vous serais reconnaissant pour toute aide

Cordialement

Esprit

Répondre

7
var OrdersByBranches = 
    from a in AllOrders 
    join b in AllBranchKeys on a.BranchKey equals b.BranchKey 
    orderby a.Date 
    group a by new { a.Date, a.paymentMethod } into BranchOrderGrouped 
    select new { 
     BranchOrderGrouped.Key.Date, 
     CurrencyAmount = BranchOrderGrouped.Sum(a => a.CurrencyAmount), 
     BranchOrderGrouped.Key.paymentMethod 
    }; 

if(string.IsNullOrEmpty(BranchKeySelected)) 
{ 
    OrdersByBranches = OrdersByBranches.Where(/*blbabla*/); 
} 

return OrdersByBranches; 
+0

Je pense que vous avez le conditionnel inversé de la question :) – jball

+0

@jball: Peut-être que c'est délibérément pour enseigner une leçon aux gens qui copient et collent du code avant de le lire et de le comprendre? –

+0

Non désolé, ce n'était pas intentionnel;) Je l'ai corrigé – Gregoire

1

Essayez (et mon linq n'est pas poli)

var OrdersByBranches = from a in AllOrders 
    join b in AllBranchKeys on a.BranchKey equals b.BranchKey 
    where b.BranchKeySelected.Contains("") 
    orderby a.Date group a by new 
     { 
      a.Date, 
      a.paymentMethod 
     } 
     into BranchOrderGrouped 
    select new 
     { 
      BranchOrderGrouped.Key.Date, 
      CurrencyAmount = BranchOrderGrouped.Sum(a => a.CurrencyAmount), 
      BranchOrderGrouped.Key.paymentMethod 
     }; 
+0

'où b.BranchKeySelected.Contains (" ")'? N'est-ce pas une faute de frappe? Il retournera 'true' sur toutes les chaînes (sauf' null'). – Steven