快速而且可能很简单的Lambda问题:
我有一家有评论的餐馆。我想查询的是:
就像这样:
var _Result = AllRestaurants
.Max(x => x.AverageRating)
.AndMax(x => x.ReviewCount)
.AndMax(x => x.NewestReviewDate)
.AndMin(x => x.DistanceAway);我知道那是伪代码。但它完美地描述了它!
当然,在多个语句中,这很简单。
只是想知道这在一条语句中是否可行,而不影响可读性。
提前谢谢你。我知道你们中有些人喜欢提问!
发布于 2012-06-11 19:30:37
您不能有多个can或mins,这是没有道理的。你需要一些启发,比如:
.Max(x => x.AverageRating * x.ReviewCount - x.DaysSinceLastReview - x.DistanceAway)发布于 2012-06-11 19:38:17
也许这样就行了?
var bestRestaurant = AllRestaurants
.OrderByDescending(r => r.AverageRating)
.ThenByDescending(r => r.ReviewCount)
.ThenByDescending(r => r.NewestReviewCount)
.ThenBy(r => r.DistanceAway)
.FirstOrDefault();您需要更改语句的顺序,以反映哪个是最重要的。
发布于 2012-06-11 19:42:54
具有加权启发式的另一种方法是按AverageRating,ReviewCount,然后.
像这样的事情应该有效:
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 firsthttps://stackoverflow.com/questions/10986272
复制相似问题