如何制作ICollection列表

时间:2014-07-05 10:32:03

标签: linq

模特课程:

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)) 所以,请帮助我,我该怎么做。

1 个答案:

答案 0 :(得分:1)

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

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