в дополнение к ответу Энтони
Where()
просмотреть все записи и затем вернуть результаты, в то время как Find()
не нужно проходить через все записи, если предикат совпадает с данным предикатом.
скажем, у вас есть класс List of Test, имеющий свойства id
и name
.
List<Test> tests = new List<Test>();
tests.Add(new Test() { Id = 1, Name = "name1" });
tests.Add(new Test() { Id = 2, Name = "name2" });
tests.Add(new Test() { Id = 3, Name = "name3" });
tests.Add(new Test() { Id = 4, Name = "name2" });
var r = tests.Find(p => p.Name == "name2");
Console.WriteLine(r.Id);
выдаст результат 2
, и только 2 посещений. Найти нужно для получения результата, но если вы используете Where().FirstOrDefault()
, мы будем просматривать все записи, а затем получим результаты.
Итак, когда вы знаете, что хотите получить только первый результат из записей в коллекции, Find()
будет более подходящим, чем Where().FirtorDefault();