LINQ to SQL查找字段的平均值?

时间:2010-07-10 05:12:14

标签: c# asp.net-mvc linq-to-sql

我有一个名为EntityRating的ViewModel,其中一个属性是AverageRating。

当我实例化ViewModel的一个新对象(称为EntityRating)类型时,如何根据相关项目的Rating字段(在SQL Server中)设置EntityRating.AverageRating?

我想做这样的事情(显然不起作用):

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

我可以平均数据库中对象的属性并将其分配给代码中对象的属性吗?

(很新,所以如果有任何术语关闭,或者如果您需要更多信息,请告诉我)

感谢。

2 个答案:

答案 0 :(得分:6)

LINQ具有.Average扩展方法,但只适用于整数。因此,您需要做的是在数据库中的所有IEnumerable对象上获取RatingField属性Rating。这可以通过使用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();

答案 1 :(得分:1)

这里有一个LINQ函数Average()http://msdn.microsoft.com/en-us/library/bb399409.aspx

var er = new EntityRating()
{
  AverageRating = _db.Where(X => X.RatingID == rating.RatingID)
    .Select( x => x.RatingField).Average();
};