顧客データベースに対して「オムニボックス」タイプの検索を実装しようとしています。この検索では、単一のクエリで顧客の任意のプロパティを照合する必要があります。
これが私が達成しようとしていることを説明するためのいくつかのサンプルデータです:
FirstName | LastName | PhoneNumber | ZipCode | ...
--------------------------------------------------
Mary | Jane | 12345 | 98765 | ...
Jane | Fonda | 54321 | 66666 | ...
Billy | Kid | 23455 | 12345 | ...
- クエリがだった場合、
"Jane"
行#2だけでなく行#1も返されると思います。 - をクエリする
12345
と、行#1と#3が生成されます。
今のところ、私のコードは次のようになっています。
IEnumerable<Customer> searchResult = context.Customer.Where(
c => c.FirstName == query ||
c.LastName == query ||
c.PhoneNumber == query ||
c.ZipCode == query
// and so forth. Fugly, huh?
);
これは明らかに機能します。エンティティの変更(プロパティの削除、新しいプロパティの導入)は問題を引き起こすため、私には本当に悪い習慣のように聞こえます。
だから:私が投げたエンティティのすべてのプロパティを検索するLINQ-fooはありますか?