Я пытаюсь получить этот запрос LINQ, чтобы возвращать точные соответствия, если они существуют, или результат «startswith», если нет. Сейчас он возвращает оба.LINQ to DataTable Фильтрация результатов
примерSearchParam = "Мундта" Результаты = Мундта, Марк | Mundt, Chris | Mundth, Lori
public static DataTable SearchPerson(string SearhParam)
{
var context = new ConnectDataContext(Properties.Settings.Default.ConnectConnectionString);
var myQuery = (from person in context.tblPersons
where person.LastName.StartsWith(SearhParam) || person.LastName == SearhParam
orderby person.LastName
select new { person.PersonID, person.LastName, person.FirstName, person.SSN });
var dataTable = myQuery.CopyLinqToDataTable();
return dataTable;
}
2 попадания в db, вероятно, быстрее, потому что если матч существует, все готово. Если вы фильтруете в памяти, вам нужно выполнить поиск O (n), чтобы узнать, есть ли у вас еще работа. –
y, хотя это зависит от сценария. Если количество людей значительно невелико, задержка в оба конца будет больше. Тем не менее, я бы не потел, если [вставить бизнес] идет хорошо, в системе будет много людей :) – eglasius
Так как мой сценарий включает в себя запросы к локальной базе данных, я в порядке с несколькими вызовами. Спасибо! –