linq, где условие на подвыбор - PullRequest
0 голосов
/ 22 января 2010

как мы можем добавить условие where в запрос подвыбора linq.

т.е.

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
                            };

Как мы можем добавить условие «Где» в оператор LINQ, как показано выше?

Ответы [ 2 ]

0 голосов
/ 22 января 2010

У вас почти было это:

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 )
            };
0 голосов
/ 22 января 2010

Просто добавьте метод Where с предложением, которое вы описали!

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