LINQ to SQL найти среднее поле? - PullRequest
4 голосов
/ 10 июля 2010

У меня есть ViewModel с именем EntityRating, одним из свойств которого является AverageRating.

Когда я создаю экземпляр нового объекта моего типа ViewModel (называемого EntityRating), как мне установить EntityRating.AverageRating на основе поля Rating (в SQL Server) соответствующего элемента?

Я хочу сделать что-то вроде этого (что, очевидно, не работает):

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

Могу ли я усреднить свойства объекта в базе данных и присвоить его свойству объекта в моем коде?

(Довольно новый, поэтому дайте мне знать, если какая-то терминология отключена или вам нужна дополнительная информация)

Спасибо.

Ответы [ 2 ]

6 голосов
/ 10 июля 2010

LINQ имеет метод расширения .Average, который работает только с целыми числами.Итак, вам нужно получить IEnumerable свойства RatingField для всех ваших Rating объектов в базе данных.Это может быть достигнуто с помощью метода расширения .Select LINQ, который Projects each element of a sequence into a new form.

int average = _db.Ratings
                    .Where(x => x.RatingID == rating.RatingID)
                    .Select(x => x.RatingField)
                    .Average();
1 голос
/ 10 июля 2010

Здесь есть функция 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();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...