如何解决Linq Order by Icollection导航属性
我有两个表,分别是items
和menugroupitemsorder
。
我的api通过发送page和pagesize获取项目。问题是项目顺序正确。当我从menugroupitemsorder
表中按订单号排序时,出现了一个错误,即DbSortClause
表达式必须具有与订单可比的类型。
这是我的物品类别,
public class Items
{
public Guid Id {get;set;}
public Guid Name {get;set;}
public virtual List<MenuGroupItemsOrder> MenuGroupItemsOrders{ get; set; } = new List<MenuGroupItemsOrder>();
...
}
public class MenuGroupItemsOrder
{
public Guid MenuGroupId {get;set;}
public Guid ItemId {get;set;}
public int OrderNumber {get;set;}
public virtual Items Items{ get; set; }
...
}
MenuGroupItemsOrder
表可以为空。
- 如果为空,请使用
DefaultIfEmpty()
。 - 如果不为空,则根据以下字段的
OrderNumber
字段订购商品MenuGroupItemsOrder
表。
这是我的代码:
var itemQuery= _itemRepository.GetQueryable(x => x.IsActive);
itemQuery = itemQuery
.Include(x => x.MenuGroupItemsOrder)
.OrderBy(m => m.MenuGroupPosItemPairs.Select(r => r.OrderNumber)
.FirstOrDefault());
这是我的例外:
System.ArgumentException:DbSortClause表达式的类型必须与顺序可比。 参数名称:键 在System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateSortClause(DbExpression键) 在System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder.DbExpressionBuilder.ToSortClause(DbExpression键) 在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OrderByTranslatorBase.TranslateOneLambda(ExpressionConverter父级,DbExpressionBinding sourceBinding,DbExpression lambda)中 在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用,DbExpression&源,DbExpressionBinding&sourceBinding,DbExpression&lambda) 在System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。