考虑下表的数据
Customers -> Orders -> Items
Customers ->
A
B
C
Orders ->
o1 - A,
o2 - A,
o3 - B,
o4 - C
OrderItems ->
o1 - Item1,
o1 - Item2,
o2 - Item3,
o3 - Item2,
o4 - Item1
Item ->
Item1,
Item2,
Item3,
Item4
我们的数据库中有与上述类似的映射。现在在 linq 中,我想获取按逗号分隔的项目排序的客户列表,例如:
Customer Items
C Item1
A Item1, Item2
B Item2
我试过这样的东西
Customer.OrderBy( cust => string.Join(",", cust.Orders
.SelectMany( order=>order.OrderItems)
.Select( orderItem=> orderItem.Item.Name)
.OrderBy(item=>item)));
但是在 linq 语句中不允许使用 string.Join。它不需要在我的网格中显示项目,但我需要让客户按逗号分隔的项目排序。
而且我不希望这在 UI 级别完成,因为需要对 IQueryable 客户对象进行排序,其他过滤器添加到该对象上,然后稍后执行.. 带有 IQueryable 客户对象的 linq orderby 查询,返回一个 IQueryable 对象。