LINQ平均函数参数

时间:2011-08-17 14:16:05

标签: asp.net linq average

我很难理解如何让我的普通UI图层功能正常工作。首先,这是我的数据访问层中的功能似乎正常工作:

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;
}

我尝试使用以下代码在我的UI图层中使用AVERAGE填充文本框:

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

我不清楚intellisense提示需要什么参数。我知道这一定很简单; O((

提前致谢!

1 个答案:

答案 0 :(得分:1)

IEnumerable.Average的Func<T,int>Func<T,double>重载需要您提供一个lambda函数,该函数选择您想要计算平均值的“AvgReviewInfo”字段。

基本上,您提供的功能可以为集合中的每个项目执行某些操作。

例如,要计算AvgNum字段的平均值,您将使用

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

左侧a =>的字面意思给出了个人 AvgReviewInfo ,我们称之为 a ,右侧a.AvgNum表示返回 AvgNum

的值

此lamba函数在IEnumerable中的每个项目上运行,并计算得到的平均值。