Linq查询包含两个相邻的选择

时间:2019-05-11 11:05:20

标签: c# linq

我有一个随时间变化的linq查询。

当前版本捕获一堆行(可以重复),按PageId对其进行分组,然后在Volume上对其进行排序,并选择每个组中的第一项。分组的结果将输出到新类。

查询以两个相邻的Select语句结束。感觉很“错”,但是我尝试了各种方式来组合两个Select语句,特别是尝试将第二个.Select()嵌入到.First()中-是否有可能变得简洁吗?

这是我尝试进行更改时遇到的错误之一:

Cannot convert lambda expression to intended delegate type because some of the elements in the block are not implicitly convertible to the delegate return type.

查询。

var result = Base.View.Query<Keyword>(query, inc => inc.Page)
.GroupBy(g => g.PageId)
    .Select(g => g.OrderByDescending(o => o.Volume).First())
    .Select(r => new LinkDTO(
        r.Term.ToLower().HighlightExcept(reservedWords),
        currentUrl.ToAbsolute(r.Page.Path)));

1 个答案:

答案 0 :(得分:1)

可以将选择仅合并为1

var result = Base.View.Query<Keyword>(query, inc => inc.Page)
.GroupBy(g => g.PageId)
    .Select(g => new LinkDTO(
        g.OrderByDescending(o => o.Volume).First().Term.ToLower().HighlightExcept(reservedWords),
        currentUrl.ToAbsolute(g.OrderByDescending(o => o.Volume).First().Page.Path))

现在比第一个更具可读性吗?我不同意。