【问题标题】:LINQ Join for Orderby onlyLINQ Join 仅适用于 Orderby
【发布时间】:2011-02-05 10:28:38
【问题描述】:

我正在尝试运行此代码:

ItemTaxonomy iTaxonomy = from itemTaxonomy in connection.ItemTaxonomy
                         where itemTaxonomy.Item.ID == itemView.ID
                         orderby itemTaxonomy.Taxonomy.Name
                         select itemTaxonomy;

当我编译它时,我得到了错误:

不能隐式转换类型 'System.Linq.IOrderedQueryable<Website.Models.ItemTaxonomy>''Website.Models.ItemTaxonomy'。存在显式转换(您是否缺少演员表?)

我认为问题出在orderby itemTaxonomy.Taxonomy.Name,但我只是想按分类项目的名称而不是它们的 ID 进行排序。有没有办法做到这一点?

【问题讨论】:

    标签: c# .net entity-framework .net-3.5


    【解决方案1】:

    不,问题是结果是一个序列,而你的变量是一个单个项目

    鉴于您正在表达排序,您一定期待多个值 - 那么您想对它们做什么?选项:

    • 使用First():

      ItemTaxonomy iTaxonomy = (from itemTaxonomy in connection.ItemTaxonomy
                                where itemTaxonomy.Item.ID == itemView.ID
                                orderby itemTaxonomy.Taxonomy.Name
                                select itemTaxonomy).First();
      

      这将返回具有相应项目 ID 的所有名称中名称最早的 ItemTaxonomy

    • 改变你的变量类型:

      IEnumerable<ItemTaxonomy> taxonomies = 
          from itemTaxonomy in connection.ItemTaxonomy
          where itemTaxonomy.Item.ID == itemView.ID
          orderby itemTaxonomy.Taxonomy.Name
          select itemTaxonomy;
      

      现在您需要处理一系列分类法,而不是单个项目。

    【讨论】:

    • 谢谢!我真傻。我完全错过了我没有将结果设置为列表。
    【解决方案2】:

    您似乎正在从 查询 中捕获 单个 值。试试:

    var iTaxonomy = from itemTaxonomy in connection.ItemTaxonomy
                    where itemTaxonomy.Item.ID == itemView.ID
                    orderby itemTaxonomy.Taxonomy.Name
                    select itemTaxonomy;
    

    或更明确地说:

    IQueryable<ItemTaxonomy> iTaxonomy = ...
    

    如果您确实想要单个项目,请使用 ,First().Single()

    【讨论】:

      【解决方案3】:

      LINQ 查询返回一组 (IEnumerable&lt;T&gt;) ItemTaxonomy 对象,您尝试将其分配给 ItemTaxonomy 类型的变量。

      您需要将变量的类型更改为IEnumerable&lt;ItemTaxonomy&gt;。 (或致电First()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多