Linq 如何制作ICollection列表

Linq 如何制作ICollection列表,linq,Linq,型号类别: public class MonthlySalesOrders : BaseNopEntityModel { public ICollection<Nop.Core.Domain.Orders.OrderItem> Categories { get; set; } } 公共类MonthlySalesOrders:BaseNoPenticModel { 公共ICollection类别{get;set;} } 控制器动作 private PagedLis

型号类别:

public class MonthlySalesOrders : BaseNopEntityModel
{

    public ICollection<Nop.Core.Domain.Orders.OrderItem> Categories { get; set; }
}
公共类MonthlySalesOrders:BaseNoPenticModel
{
公共ICollection类别{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);
    }
private PagedList.IPagedList orderByDateAdded()
{
var order=_orderService.SearchOrders();
var DAYLYORDERRERREPORT=(从ord.AsEnumerable()中的o开始)
按新的{Quarter=((o.CreatedOnUtc.CompareTo(DateTime.UtcNow.AddDays(-7)))分组到orGrp中
选择新的MonthlySalesOrders
{Categories=(ICollection)orGrp.Select(c=>c.OrderItems)
})
返回日OrderReport.ToPagedList(1,10);
}
在上面的“控制器操作”中,我使用linq查询从“orGrp组”中选择orderlist,并在“模型类”中声明了一个
公共ICollection Categories{get;set;}
,因此当我构建并运行上面的代码时,它会显示以下错误消息

无法将类型为“whereSelectEnumerableInterator
2[Nop.Core.Domain.Orders.Order,System.Collections.Generic.ICollection
1[Nop.Core.Domain.Orders.OrderItem]]”的对象强制转换为类型为“System.Collections.Generic.ICollection`1[Nop.Core.Domain.Orders.OrderItem].”。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.InvalidCastException:无法将类型为“WhereSelectEnumerableTerator
2[Nop.Core.Domain.Orders.Order,System.Collections.Generic.ICollection
1[Nop.Core.Domain.Orders.OrderItem]]”的对象强制转换为类型“System.Collections.Generic.ICollection`1[Nop.Core.Domain.Orders.OrderItem].”

源错误:

第2374行:var daylOrderReport=(从ord.AsEnumerable()中的o开始) 第2375行:按新的{Quarter=((o.CreatedOnUtc.CompareTo(DateTime.UtcNow.AddDays(-7)))将o分组到orGrp中 第2376行:选择新的MonthlySalesOrders 第2377行:{ 第2378行:Year=orGrp.First().CreatedOnUtc.Year.ToString()

我想从
orGrp
的三级嵌套引用中获取类别列表,比如
Categories=(ICollection)orGrp.Select(gb=>gb.OrderItems.Select(s=>s.Product.ProductManufacturers))
因此,请帮助我如何做到这一点。

您可以使用函数返回一个实现的。另外,它看起来像是
c.OrderItems
是一个项目的可枚举项,而不是单个项目。如果是这种情况,那么您将希望展平返回的列表

orGrp.SelectMany(c => c.OrderItems).ToList()