【问题标题】:Linq to Entities: complex query getting "average" restaurant ratingLinq to Entities:获取“平均”餐厅评分的复杂查询
【发布时间】:2011-07-15 02:55:33
【问题描述】:

所以我正在为我的社区建立一个餐厅评论网站。我需要 从下表中提取数据:RESTAURANT、CUISINE、CITY、 PRICE 和 RATING(客户评分)。

查询应返回所选 CUISINE_ID 的所有餐厅和 返回 RESTAURANT_NAME、CUSINE_NAME、CUTY_NAME、PRICE_CODE 和它 应该平均所有评论 RATING_CODE 并返回一个计算的 价值。我可以返回除平均值之外的所有数据 评分。

我只使用 LINQ to Entities 2 天,使用 LINQ 大约 3周,所以我真的是个新手;我在等我的 LINQ 书 从 Amazon.com 交付。感谢您的帮助指导!

【问题讨论】:

  • 您是否想要获得一些包含以下内容的复合结果:RESTAURANT_NAME、CUSINE_NAME、CUTY_NAME、PRICE_CODE 和 RATING_CODE_AVG?还是能够将平均代码作为与其余数据分开的结果生成就足够了?

标签: linq entity-framework entity linq-expressions


【解决方案1】:

它最终应该看起来像这样:

var avgForMatches = 
    (from r in context.Restaurants
     where r.Cuisines.Any(c => c.CuisineName == cuisineName)
     where r.Prices.Any(p => p.PriceCode == priceCode)
     //... same pattern for other searches.
     select r.RatingCode)
    .Average();

【讨论】:

  • 哇....就是这么简单。还有一个问题,“上下文”……这是一个保留字还是指的是我的实体模型?
  • 是的,很简单。警告:LINQ 会让人上瘾。 ;-) context 只是引用您的实体模型实例的变量。我通常将 EF 查询代码包装在 using (var context = new MyEntityContext()) {...} 之类的东西中。 (实际上,我通常使用注入工厂,而不是自己创建它,但您大致了解。)
【解决方案2】:

了解 101 个 linq 样本中的聚合方法(包括平均值) - http://msdn.microsoft.com/en-us/vcsharp/aa336747

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多