Я отчаянно пытаюсь использовать LinqKits PredicateBuilder, чтобы позволить пользователю вводить поисковый запрос в текстовое поле и возвращать записи из двух таблиц / наборов сущностей базы данных, но я изо всех сил пытаюсь добраться куда угодно. (Упрощенная) структура базы данных выглядит следующим образом:
Person Alias
------ ------
A_ID
P_ID ---------------< P_ID
P_FIRST_NAME A_FIRST_NAME
P_SURNAME A_SURNAME
Итак, у каждого человека может быть 0 или много псевдонимов. Я пытаюсь разрешить пользователю выполнять поиск по имени и извлекать строки из таблицы Person, где это имя совпадает с именем в таблице Person или Alias. Пока у меня есть:
var peopleQuery = MainFrm.genesisContext.People.AsExpandable();
var peoplePredicate = PredicateBuilder.True<Person>();
var aliasQuery = MainFrm.genesisContext.Alias.AsExpandable();
var aliasPredicate = PredicateBuilder.False<Alias>();
if (!String.IsNullOrEmpty(txtFirstName.Text.Trim()))
{
peoplePredicate = peoplePredicate.And(p => p.P_FIRST_NAME == txtFirstName.Text);
aliasPredicate = aliasPredicate.And(a => a.A_FIRST_NAME == txtFirstName.Text);
peoplePredicate = peoplePredicate .Or(p => aliasPredicate);
}
Это не работает, потому что я пытаюсь преобразовать людей в псевдонимы. По сути, я полностью застрял и не уверен, возможно ли вообще выполнить запрос Or для двух разных таблиц (?)