如何使用linq将IEnumerable转换为Collection

时间:2017-06-16 18:27:51

标签: c# linq collections type-conversion

我使用ProductViewModel中的产品填充部分视图。当模型回来时我们有......

var viewModel = _productAgent.GetProductsByCatalog(catalogId);

viewModel是ProductViewModel的集合

我正在使用linq将集合的大小限制为前10个产品,因为createDate desc就像这样......

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它需要是一个集合,我不知道如何转换它或者如果我采取正确的方法。

2 个答案:

答案 0 :(得分:10)

您可以使用扩展程序.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());

答案 1 :(得分:-3)

您可以尝试newList.toList();