LinqKits PredicateBuilder を使用して、ユーザーがテキスト ボックスに検索語を入力し、2 つのデータベース テーブル/エンティティ セットからレコードを返せるように必死に試みていますが、どこにでも行くのに苦労しています。(単純化された) データベース構造は次のとおりです。
Person Alias
------ ------
A_ID
P_ID ---------------< P_ID
P_FIRST_NAME A_FIRST_NAME
P_SURNAME A_SURNAME
したがって、各人は 0 個のエイリアスを持つことも、複数のエイリアスを持つこともできます。私がやろうとしているのは、ユーザーが名前を検索し、その名前が Person テーブルまたは Alias テーブルの名前と一致する Person テーブルから行を引き戻すことです。これまでのところ、私は持っています:
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 に変換しようとしているため、これは機能しません。基本的に、私は完全に立ち往生しており、2 つの異なるテーブルに対して Or クエリを実行できるかどうかさえわかりません (?)