2011-04-25 11 views
6

2つのフィールドをどのように組み合わせて検索しますか?可能であれば、SQLの終わりで検索が行われます。エンティティフレームワーク4の組み合わせフィールドの検索

だから私は名と姓の顧客テーブルがあります。ユーザーが単一の検索ボックスを使用してこれらの列の両方を検索できるようにしたいと思います。

私のクエリは、現在、次のようになります。

var query = DbContext.Customers 
    .Where(c => c.FirstName.Contains(search) || c.LastName.Contains(search)); 

が、それはあなたにもマップされたFullName列を持っていない限りそれは不可能です

var query = DbContext.Customers 
    .Where(c => c.FullName.Contains(search)); 

答えて

14

のようなものでなければなりません。

var query = DbContext.Customers 
        .Where(p => String.Concat(p.FirstName, " ", p.LastName) 
             .Contains(search)); 
+0

素晴らしい、THXに動作します。 –

+0

部分クラスにFullNameプロパティを追加してみましたが、文字列を結合するのではなくString.Concatバージョンを使用しましたが、残念ながら「タイプメンバーFullNameはlinq-to-entitiesでサポートされていません。これを稼働させる? –

+2

@Mvision:L2Eでは、マップされていないプロパティは使用できません。 –

1

あなたは、データベースに計算列を使用してマップすることができ、その 例えば:この問題を回避する方法は、LINQのツーエンティティに許可されているString.Concatすることができ

alter table Customer add FullName AS FirstName + ' ' + LastName 

(私が知っているきれいではありません)

関連する問題