2010-01-22 7 views
0

comment pouvons-nous ajouter une condition where à une requête sous-linq linq.linq où condition sur sous-sélection

à savoir

List<CallLog> callLog = CallLog.SampleData(); 
List<Contacts> contacts = Contacts.SampleData(); 


var q = from call in callLog 
     where call.Incoming == true 
     group call by call.Number into g 
     select new contacts { 
           contact.FirstName = g.FirstName, 
           contact.LastName = g.LastName, 
          Count = g.Count(), 
          Avg = g.Average(c => c.Duration) <--- WHERE c.Duration > 5, 
          Total = g.Sum(c => c.Duration) <--- WHERE c.Duration >= 60 
          }; 

Comment pouvons-nous ajouter un « état où » la déclaration LINQ comme indiqué ci-dessus?

Répondre

0

Ajoutez simplement une méthode Where avec la clause que vous avez décrite!

Avg = g.Where(c => c.Duration > 5).Average(c => c.Duration), 
Total = g.Where(c => c.Duration >= 60).Sum(c => c.Duration) 
0

Vous avait presque il:

var q = from call in callLog 
     where call.Incoming == true 
     group call by call.Number into g 
     select new contacts { 
       contact.FirstName = g.FirstName, 
       contact.LastName = g.LastName, 
          Count = g.Count(), 
          Avg = g.Where(c => c.Duration > 5).Average(c => c.Duration), 
          Total = g.Where(c => c.Duration >= 60).Sum(c => c.Duration) 
      };