2011-01-21 7 views
1

私は、パラメータの存在に基づいてL2クエリを構築しようとしています。私はオブジェクトの直接的なプロパティに対してこれを達成することができますが、プロパティの1つが多>多くのエンティティである場合、私はそれを把握することができません。私のクエリをLINQ to SQLに追加する

たとえば、私のユーザーテーブルには名前列があります。
ブランドテーブルもあり、ユーザーは複数のブランドをbrand_usersテーブルに格納している場合があります。

特定のブランドIDを持つbrand_usersテーブルのエントリを持つユーザーのみを照会する条件を、自分のクエリに追加したいとします。

GetUser(UserSearchParameter searchParam) 
{ 
    var query = from u in Users select u; 

    if(searchParam.Name != null) 
     query = query.Where(u => u.Name.Contains(searchParam.Status)); // this works!! 

    if(searchParam.BrandId != null) 
     query = query.Where??? // this is where I'm stuck 

    return new List<user>(query); 
} 

答えて

2

方法について:

query = query.Where(u => Brands.Any(brand => brand.UserId == u.UserId && 
              brand.BrandId == searchparam.brandId)); 

それはしかし、あなたのブランドのテーブルの構造を知らなくても、より詳細な情報を与えるのは難しい、またはそれはSQLにLINQで表されていますか。

+0

素晴らしい!これはちょうどそれを行った。 "ブランド"の代わりに "brand_users"を指定しました – earthling

1

あなたは上記のような名前で、L2S関係にbrand_users多対>多くのテーブルをマッピングしてきたと仮定すると、

query = query.Where(u => u.Brand_Users.Any()); 

ような何か。

+0

あなたはスケートされています。 –

+0

@SharePoint初心者 - 初めてではなく、 '( –

関連する問題