LINQ Среднее аргументы функции - PullRequest
2 голосов
/ 17 августа 2011

Я озадачен тем, как заставить работать мою среднюю функцию слоя пользовательского интерфейса. Во-первых, вот функция в моем уровне доступа к данным, которая работает нормально:

public class AvgReviewInfo
{
   public int AvgReviewId { get; set; }
   public int AvgNum { get; set; }
   public double AvgTags { get; set; }
}

public IEnumerable<AvgReviewInfo> getAvgCuisine(int RestID)
{
   // Return the count of the average number of reviews for a specific restaurant ID
   var AvgCuisine = from REVIEW in db.REVIEWs
                    where REVIEW.REST_ID == RestID
                    group REVIEW by REVIEW.REVIEW_ID into t
                    select new AvgReviewInfo { 
                             AvgReviewId = t.Key, 
                             AvgNum = t.Count(),
                             AvgTags = t.Average(c => c.FOOD_ID)   };

   return AvgCuisine;
}

Я пытаюсь заполнить текстовое поле с помощью СРЕДНЕГО в своем слое пользовательского интерфейса, используя следующий код:

BLgetDetails obj2 = new BLgetDetails();
var AvgCuisine = obj2.getAvgCuisine(restid);
lblAvgReviews.Text = AvgCuisine.Average().ToString();

Я не понимаю из подсказок по intellisense, какие аргументы нужны. Я знаю, что это должно быть что-то простое; O ((

Заранее спасибо!

1 Ответ

1 голос
/ 17 августа 2011

Перегрузки Func<T,int> или Func<T,double> IEnumerable.Average требуют, чтобы вы предоставили лямбда-функцию, которая выбирает, в каком поле «AvgReviewInfo» вы хотите вычислить среднее значение.

В основном вы предоставляете функцию, которая делает что-то для каждого элемента в коллекции.

Например, для расчета среднего значения поля AvgNum, которое вы используете

lblAvgReviews.Text = AvgCuisine.Average(a=>a.AvgNum).ToString();

Где левая сторона a => буквально означает для данного индивидуума AvgReviewInfo , который мы называем a , правая сторона a.AvgNum означает возврат значение AvgNum

Эта функция lamba запускается для каждого элемента в IEnumerable, и в результате вычисляется среднее значение.

...