2011-01-04 24 views
30

Birinin, bir ortalama hesaplamak için LINQ sözdizimi konusunda bana yardımcı olması dileğiyle. Örneğin, ben şu LINQ sorgusu vardır:LINQ Kullanarak Ortalama Olun

var rates = from rating in ctx.Rates 
      where rating.Id == Id 
      select new 
      { 
       UserId = rating.UserId, 
       Rating = rating.Rating 
      }; 

10 ise kayıtlar döndürülür, ben Değerlendirme sahada ortalamasını hesaplamak gerekir. DB'mde bir Double olarak tanımlanıyor. EF için LINQ kullanıyorum. Bu yüzden, UserId, MiscId öğesini atayacağım ve Puan, döndürülen kayıtların ortalaması olacaktır. Bir nesneyi istemci koduna geri iletiyorum.

cevap

27

Kullanıcı kimliği başına ortalama bir derecelendirme mi arıyorsunuz? Eğer öyleyse, o zaman hem GroupBy hem de Average'u kullanmanız gerekir.

var rates = ctx.Rates 
       .Where(r => r.Id == Id) 
       .GroupBy(g => g.UserId, r => r.Rating) 
       .Select(g => new 
       { 
        UserId = g.Key, 
        Rating = g.Average() 
       }); 
70
double RatingAverage = ctx.Rates.Where(r => r.Id == Id).Average(r => r.Rating); 
+0

basit-n-humble :) – user9371102

+0

çok basit. Teşekkürler! –

+4

Bu kabul edilen cevap olmalı. Teşekkürler. –