我拼命尝试使用 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);
}
这不起作用,因为我正在尝试从 People 转换为 Alias。基本上我完全卡住了,不确定是否可以对两个不同的表进行 Or 查询(?)