重複しない:これは私の具体的なケースで重複しているとは思わないが、実際には警告を無視する方が良いと感じている。例えばResharperの '可能な複数のIEnumerable警告の列挙'
、
IEnumerable<Item> milionItems = GetAMillionItemsFromDatabase();
var item1 = millionItems.FirstOrDefault(x=> x.Condition == "Excellent");
var item2 = millionItems.FirstOrDefault(x=> x.Condition == "Good");
は、私が「millionItems」の下に警告メッセージが表示されますし、私はそれはしかし、私はそれはちょうどそれを取り除くために、常にToList'ing価値があるかどうかわからないんだけど何を意味するか知っています。
GetAMillionItemsFromDatabase().ToList();
これは、一度に100万件のレコードをメモリに持ち込むので、パフォーマンスが賢明ではないようです。
しかし、私はそれをしないで、IEnumerableを列挙し、データベースに2回ヒットしても、最初に一致するアイテムを見つけて返すようにすべてのデータを取り込むわけではありません。この場合、実際にはメッセージを無視する方が良いと思われます。
もちろん、*警告を無視することもできます。それは何が列挙されているかによって異なります。 'IEnumerable'を実装するいくつかのクラスは、それらを2回列挙しようとすると空のコレクションを返します。あなたのケースで何が最善であるかを判断する必要があります:リスト内のすべてのアイテムを保持するか、複数の潜在的に高価なデータベースコールを作成する、あるいはLINQを先取りして、item1とitem2を単一のパスでデータ。この場合も 'Enumerable.Aggregate' *が役に立つかもしれません。 –