Lambda Max和Max and Max

Jer*_*xon 3 c# lambda

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

我有一家餐厅评论.我想查询一个:

  • 马克斯(AverageRating)
  • 和Max(ReviewCount)
  • 和Max(最新评论日期)
  • 和Min(DistanceAway)

像这样的东西:

var _Result = AllRestaurants
    .Max(x => x.AverageRating)
    .AndMax(x => x.ReviewCount)
    .AndMax(x => x.NewestReviewDate)
    .AndMin(x => x.DistanceAway);
Run Code Online (Sandbox Code Playgroud)

现在,我知道这是伪代码.但它完美地描述了它!

当然,在多个陈述中,这很简单.

只是想知道这是否可能在一个声明中,而不会破坏可读性.

先感谢您.我知道有些人喜欢查询问题!

Ing*_*ahn 6

你不能有多个最大值或分钟,这没有意义.你需要某种启发式方式:

   .Max(x => x.AverageRating * x.ReviewCount - x.DaysSinceLastReview - x.DistanceAway)
Run Code Online (Sandbox Code Playgroud)

  • 如果这通常是您的意思,您也很可能希望为每个条件指定权重. (3认同)

Ric*_*ard 6

也许这样呢?

var bestRestaurant = AllRestaurants
    .OrderByDescending(r => r.AverageRating)
    .ThenByDescending(r => r.ReviewCount)
    .ThenByDescending(r => r.NewestReviewCount)
    .ThenBy(r => r.DistanceAway)
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

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