Тот, который я заметил несколько раз - не используйте:
if (query.Count() > 0)
... используйте это вместо:
if (query.Any())
Таким образом, нужно только найти первое совпадение.
РЕДАКТИРОВАТЬ: Вас также может заинтересовать сообщение в блоге , которое я недавно написал об оптимизации, которое может находиться в LINQ to Objects, но отсутствует (или не было в .NET 3,5).
Кроме того, если вы собираетесь выполнить много операций x.Contains(y)
, а x
является результатом существующего запроса (т. Е. Это не будет какая-то оптимизированная коллекция), вам, вероятно, следует подумать о создании HashSet<T>
из x
, чтобы избежать линейного сканирования (выполнения запроса для получения результатов x
) на каждой итерации.