public List<Customer> FilterCustomersByStatus(List<Customer> source, string status)
{
return (List<Customer>)source.Where(c => c.Status == status);
}
我遇到了一个错误,无法进行转换:
无法将类型为“WhereListIterator`1[AppDataAcces.Customer]”的对象强制转换为类型“System.Collections.Generic.List`1[AppDataAcces.Customer]”。
为什么会出现这个错误呢?因为基础类型是相同的,Enumerable.Where为什么要创建一个新的WhereListIterator实例?如果是这样,为什么任何人都会这样做呢?因为这是一种不必要的性能和功能损失,因为我总是需要创建一个新的列表(.ToList())。
.ToList()
,否则它实际上不会返回List
对象。它这样做的原因是为了提高性能和限制内存使用;对于包含1000000个条目的列表,Linq可以在不必每次复制列表的情况下过滤/选择所有项目。 - Chris SinclairList
?特别是像你所说的那样,它包含了 500k 条目。 - Sergei Rogovtcev