首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambda Max和Max和Max

Lambda Max和Max和Max
EN

Stack Overflow用户
提问于 2012-06-11 19:24:46
回答 5查看 7K关注 0票数 3

快速而且可能很简单的Lambda问题:

我有一家有评论的餐馆。我想查询的是:

  • Max(AverageRating)
  • And Max(ReviewCount)
  • And Max(NewestReviewDate)
  • And Max(NewestReviewDate)
  • And Min(DistanceAway)

就像这样:

代码语言:javascript
复制
var _Result = AllRestaurants
    .Max(x => x.AverageRating)
    .AndMax(x => x.ReviewCount)
    .AndMax(x => x.NewestReviewDate)
    .AndMin(x => x.DistanceAway);

我知道那是伪代码。但它完美地描述了它!

当然,在多个语句中,这很简单。

只是想知道这在一条语句中是否可行,而不影响可读性。

提前谢谢你。我知道你们中有些人喜欢提问!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-11 19:30:37

您不能有多个can或mins,这是没有道理的。你需要一些启发,比如:

代码语言:javascript
复制
   .Max(x => x.AverageRating * x.ReviewCount - x.DaysSinceLastReview - x.DistanceAway)
票数 6
EN

Stack Overflow用户

发布于 2012-06-11 19:38:17

也许这样就行了?

代码语言:javascript
复制
var bestRestaurant = AllRestaurants
    .OrderByDescending(r => r.AverageRating)
    .ThenByDescending(r => r.ReviewCount)
    .ThenByDescending(r => r.NewestReviewCount)
    .ThenBy(r => r.DistanceAway)
    .FirstOrDefault();

您需要更改语句的顺序,以反映哪个是最重要的。

票数 6
EN

Stack Overflow用户

发布于 2012-06-11 19:42:54

具有加权启发式的另一种方法是按AverageRating,ReviewCount,然后.

像这样的事情应该有效:

代码语言:javascript
复制
var _Result = AllRestaurants
    .OrderByDescending(x => x.AverageRating)
    .ThenByDescending(x => x.ReviewCount)
    .ThenByDescending(x => x.NewestReviewDate)
    .ThenByDescending(x => x.DistanceAway);
    // using *Descending so you get the higer-valued ones first
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10986272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档