我正在尝试运行以下代码:

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进行订购。有没有办法做到这一点?

最佳答案

不,问题在于结果是一个序列,而您的变量是一个项目。

鉴于您要表达排序,您必须期待多个值-那么您想对它们做什么?选项:


使用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;


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

10-07 22:44