模特课程:
public class MonthlySalesOrders : BaseNopEntityModel
{
public ICollection<Nop.Core.Domain.Orders.OrderItem> Categories { get; set; }
}
控制器操作
private PagedList.IPagedList<MonthlySalesOrders> orderByDateAdded()
{
var ord = _orderService.SearchOrders();
var daylyOrderReport = (from o in ord.AsEnumerable()
group o by new { Quarter = ((o.CreatedOnUtc.CompareTo(DateTime.UtcNow.AddDays(-7)))) } into orGrp
select new MonthlySalesOrders
{ Categories = (ICollection<Nop.Core.Domain.Orders.OrderItem>)orGrp.Select(c => c.OrderItems)
})
return daylyOrderReport.ToPagedList(1, 10);
}
从上面&#34;控制器动作&#34;我已经使用linq查询从&#34; orGrp group&#34;中选择了orderlist,并进入&#34; Model class&#34;我已声明public ICollection<Nop.Core.Domain.Orders.OrderItem> Categories { get; set; }
,因此当我构建并运行上面的代码时,它会显示以下错误消息。
无法转换类型&#39; WhereSelectEnumerableIterator
2[Nop.Core.Domain.Orders.Order,System.Collections.Generic.ICollection
1 [Nop.Core.Domain.Orders.OrderItem]]&#39;键入&#39; System.Collections.Generic.ICollection`1 [Nop.Core.Domain.Orders.OrderItem]&#39;。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。异常详细信息:System.InvalidCastException:无法转换类型为&#39; WhereSelectEnumerableIterator
2[Nop.Core.Domain.Orders.Order,System.Collections.Generic.ICollection
1 [Nop.Core.Domain.Orders.OrderItem]]&#39;输入&#39; System.Collections.Generic.ICollection`1 [Nop.Core.Domain.Orders.OrderItem]&#39;。来源错误:
第2374行:var daylyOrderReport =(来自ord.AsEnumerable()中的o 第2375行:将新的{Quarter =((o.CreatedOnUtc.CompareTo(DateTime.UtcNow.AddDays(-7))))}分组到orGrp 第2376行:选择新的MonthlySalesOrders 第2377行:{ 第2378行:Year = orGrp.First()。CreatedOnUtc.Year.ToString(),
我希望从orGrp
的{{1}}三级嵌套引用中获取类别列表,例如Categories =(ICollection<Nop.Core.Domain.Orders.OrderItem>) orGrp.Select(gb => gb.OrderItems.Select(s => s.Product.ProductManufacturers))
所以,请帮助我,我该怎么做。
答案 0 :(得分:1)
您可以使用ToList函数返回实现IList的ICollection。此外,看起来c.OrderItems
是一个可枚举的项目,而不是单个项目。如果是这种情况,那么您需要将SelectMany返回的列表展平。
orGrp.SelectMany(c => c.OrderItems).ToList()