2010-07-10 24 views
2

我有一個叫做EntityRating的ViewModel,其中一個屬性是AverageRating。LINQ to SQL查找字段的平均值?

當我實例化我的ViewModel(稱爲EntityRating)類型的新對象時,如何根據有問題的項目的評級字段(在SQL Server中)設置EntityRating.AverageRating?

我想要做這樣的事情(這顯然是行不通的):

var er = new EntityRating() 
     { 
      AverageRating = _db.All<Ratings>(X => X.RatingID = rating.RatingID).Average(RatingField); 
     }; 

我可以平均一個對象的屬性在數據庫中,它在我的代碼分配給對象的屬性?

(相當新的,所以讓我知道如果任何術語是關閉的,或者如果你需要更多的信息)

感謝。

回答

4

但是LINQ的.Average擴展方法只適用於整數。因此,您需要做的是在數據庫中的所有Rating對象上獲取RatingField屬性的IEnumerable。這可以通過使用Projects each element of a sequence into a new form的LINQ的.Select擴展方法來完成。

int average = _db.Ratings 
        .Where(x => x.RatingID == rating.RatingID) 
        .Select(x => x.RatingField) 
        .Average(); 
+0

感謝。忘記.Select() – johnnycakes 2010-07-10 05:40:52

+1

還有平均過載接受Func ,所以給定一個評級集合,您也可以調用.Average(x => x.RatingField) – 2010-07-10 05:50:19