根据属性从列表中删除项目

时间:2019-04-22 11:41:20

标签: c# asp.net asp.net-mvc linq asp.net-mvc-4

我有一种奇怪的情况,代码行执行需要5分钟以上的时间,而我不明白为什么:

var cleansedTransactions = competitorTransactions.Where(i => !endedItemsLocal.Contains(i.ItemID)).ToList();

进一步说明:

competitorTransactions - is a list of transactions which in this case contains 921 record inside it;

endedItemsLocal - is an IEnumerable<string> - which in this case contains 8 records

我在这里要做的是从“ competitorTransactions”列表中删除“ endedItemsLocal”(IEnumerable)中包含的所有项目。

为什么要花5到9分钟才能执行?我可以肯定地说,如果这两个收藏集包含数百万条记录,则需要9分钟,但是只有921和8,这让我发疯了,我不明白为什么要花这么长时间?有人可以帮我吗 ? :/

1 个答案:

答案 0 :(得分:2)

您不应使用IEnumerable,因为它是延迟加载的。使用EndItemsLocal的ToArray并使用该集合,它将分配一个集合,从而提高速度。