通常、私はストアドプロシージャを使用し、SQLで作業するので、ここで用語を少し外してしまった場合はお詫びします。
3つの個別のテーブルを持つデータベースがあり、3つのテーブルのそれぞれで複数のフィールドを検索する必要があります。
私はこれを効果的な方法で行っていないことを確信しています。最初は、それを理解するために簡単な設定でそれを行おうとしています。
私は次のものを持っています。
var foo1 = entities.table1.Where(a => a.bodyText.Contains(searchString) || a.pageTitle.Contains(searchString));
var foo2 = entities.table2.Where(b => b.newsArticle.Contains(searchString) || b.newsArticle.Contains(searchString));
var foo3 = entities.table3.Where(c => c.ImageDescriptionContains(searchString));
これらすべての結果を1つのリピーターにまとめて表示する必要があります。
この時点で、3セットのデータはすべて、匿名データの個別の一意のコレクションになっています。では、これらを単一のコヒーレントなバインド可能なソースに変換する最良の方法は何でしょうか。
私は、各リストを順番に繰り返し、表示する必要のあるフィールドを引き出して新しいクラスに入れ、これらのクラスのリストをリピーターにバインドすることを考えていました。
しかし、それはすべて私には少し不格好に思えます。
3つのテーブルすべてを一度に検索し、各テーブルから必要なフィールドだけを共通の名前で返す方法はありますか(つまり、SQLでは次のように記述できます)。
select b.newsArticle as myText,
また
select newsArticle, ''
ニュース記事と空の文字列を返します)。