scarletwitch1990 Ответов: 2

Что лучше найти () или где ()?


Привет,
Мне нужна помощь в определении того, что лучше в извлечении записей в linq.
У меня есть производственная база данных, где есть таблица, скажем, X, которая имеет почти 100 000 записей. Теперь для поиска только одной записи у меня есть два варианта: использовать dbContext и добавить Where () или Find ()...

var dbSet = DataContext.Set<t>();

//1st way is Find() clause
X obj = dbSet.Find(id);

//2nd way is Where() clause
X obj = dbSet.Where(y); //where y is predicate like zz => zz.Id == id 


Что я уже пробовал:

Оба дают мне ожидаемый результат, но я хотел бы знать, какая практика лучше?

Philippe Mori

Лучше всего проверить это самостоятельно. Таким образом, у вас будет лучшее понимание воздействия в вашем конкретном приложении. Кстати, всегда полезно убедиться, что база данных правильно проиндексирована и что выполняются относительно оптимальные запросы. Я часто использую LinqPad для проверки своего запроса. Вы должны убедиться, что используете тот же драйвер для доступа к этим данным, что и тот, который используется в приложении.

2 Ответов

Рейтинг:
2

Abrar Kazi

Где: вместо того, чтобы позволить ему найти, вы можете явно указать требуемый идентификатор.


Рейтинг:
19

F. Xaver

после короткого Гугла..

это может быть хорошим чтением.

в C# - найти() и Where (). FirstOrDefault () - Переполнение Стека[^]


F-ES Sitecore

Интересные недоверчивые комментарии к спектаклю, люди часто думают, что раз что-то "новее", то оно должно быть "быстрее". LINQ существует для удобства и простоты кода, а не для производительности. Если вам нужна производительность, не используйте LINQ.

F. Xaver

да. Какой-то хороший написанный LINQ one liner, чертовски медленный по сравнению с 10-линейным циклом для итерации по одной и той же коллекции.
Если производительность необходима, лучше не использовать LINQ to much (или любой другой)!
Во всяком случае, я хотел бы использовать его, когда нет необходимости в производительности/скорости