У меня есть объект Person и PersonType, где у Person есть один-много PersonTypes.PersonType может быть бухгалтером, консультантом и т. Д.
Таблица Person имеет следующие столбцы: 'имя' |'фамилия' |«электронная почта» |'phonenumber'
Таблица PersonType имеет следующие столбцы: 'name' |'description'
Я создал механизм поиска с использованием LINQ в C #, но проблема в том, что я получаю неправильный результат из-за проблемы с ограничением LINQ.Предположим, у нас есть две записи Person, где первая запись - это «Консультант», а другая запись - «Консультант и бухгалтер», что означает, что она имеет отношение к дочерним объектам.
Примечание.Мой поиск нечувствителен к регистру.
Предположим, мой текст поиска - 'co'.Тогда я не хочу, чтобы результат был 3 записи.Теперь он возвращает первое лицо и два экземпляра второго лица из-за двух совпадений 'co' для бухгалтера и консультанта для второго лица.
Конечно, я могу просмотреть результат и отфильтровать дубликаты, но было бы неплохо иметь один запрос.
Большое спасибо за ваш вклад.
ВотLinq:
private IList<PersonViewModel> SearchAll(string searchCriteria)
{
var result = System.Web.HttpContext.Current.Session["Persons"] as IList<PersonViewModel>;
if (result != null)
{
var v = (from a in result
from b in a.PersonTypes
where
a.FirstName.CaseInsensitiveContains(searchCriteria) ||
a.LastName.CaseInsensitiveContains(searchCriteria) ||
a.Email.CaseInsensitiveContains(searchCriteria) ||
a.PhoneNumber.CaseInsensitiveContains(searchCriteria) ||
b.Name.CaseInsensitiveContains(searchCriteria)
select a);
return v.ToList();
}
return result;
}