【问题标题】:Linq query contains two adjacent selectsLinq 查询包含两个相邻的选择
【发布时间】:2019-05-11 19:31:01
【问题描述】:

我有一个 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)));

【问题讨论】:

    标签: c# linq


    【解决方案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))
    

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

    【讨论】:

    • 不,我绝对同意 - 解决方案并不像我预期的那么优雅。
    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 2014-08-04
    • 2023-04-09
    • 2013-02-17
    • 1970-01-01
    • 2011-10-16
    • 2013-12-28
    • 1970-01-01
    相关资源
    最近更新 更多