繁体   English   中英

如何使用linq将IEnumerable转换为Collection

[英]How do I convert IEnumerable to Collection with linq

我正在用ProductViewModel中的产品填充局部视图。 模型回来时,我们有...

var viewModel = _productAgent.GetProductsByCatalog(catalogId);

viewModel是ProductViewModel的集合

我正在使用linq将集合的大小限制为由createDate desc排序的前10个产品,例如...

var newList = (from p in viewModel
           //from pf in p.DomainObjectFields
           select p).Distinct().OrderByDescending(d => d.CreateDate).Take(10);

我尝试加载部分...

return PartialView("_ProductGrid", viewModel);

问题是newList是IEnumerable它必须是一个集合,我不知道如何转换它,或者如果我采用正确的方法。

您可以使用扩展方法.ToList() .ToArray()等。

var newList = viewModel
    .Distinct()
    .OrderByDescending(d => d.CreateDate)
    .Take(10)
    .ToList();

更新资料

如果要将IEnumerable<T>转换为Collection<T> ,则可以使用Collection<T>类的构造函数的重载,如下所示:

Collection<ProductViewModel> newList = new Collection<ProductViewModel>(viewModel
    .Distinct()
    .OrderByDescending(d => d.CreateDate)
    .Take(10)
    .ToList());

您可以尝试newList.toList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM