2017-10-16 14 views
-2
public IEnumerable<User> GetUsers(string location, string role, bool excludeHeadOffice) 
{ 
    var users = from u in DataContext.Users 
     where 
      (u.location == location || location == null) && 
      (u.role == role || role == null) 

    return users;   
}   

パラメータに基づいて、ブールフィルタ、および追加のフィルタを追加します。はどのようにこのように私は何をしたいです

(excludeHeadOffice && u.location != "ho") 

がどのように私は、既存のwhere句にこの式を追加することができますか?

更新 excludeHeadOfficeがtrueの場合、それはそれ以外の場合は、使用して以前のように動作するはずフィルタ

(excludeHeadOffice && u.location != "ho") 

を使用する必要があります。

(u.location == location || location == null) 
+1

あなたは 'u.location =" ho "'でフィルタリングを有効にするスイッチとして 'isHeadOffice'を使用したいと思っていますか? –

+0

excludeHeadOfficeがfalseの場合は、今のように動作します。真であれば、それは '' '(excludeHeadOffice && u.location!=" ho ")' '' 'に基づいてフィルタリングする必要があります。 –

+0

メソッドには' excludeHeadOffice'はありません。 – JLRishe

答えて

1

あなたはそれを通じ考えると来る必要必要なブール論理を使用して起動します。

where 
    (
    (excludeHeadOffice && u.location != "ho") || 
    (!excludeHeadOffice && (u.location == location || location == null)) 
    ) && 
    (u.role == role || role == null) 
0

これはあなたが探しているものですか?

public IEnumerable<User> GetUsers(string location, string role, bool excludeHeadOffice = false) 
{ 
    var users = from u in DataContext.Users 
    where 
     (u.location == location || location == null) && 
     (u.role == role || role == null) 

    if(excludeHeadOffice) 
    { 
     return users.Where(u => u.location != "headOfficeLocation" && u.location !="ho"); 
    } 
    return users;   
} 
+0

if文内のコードは 'users'変数を変更しません。あなたは 'users = users.Where(...')が必要になります。 – gunr2171

+0

** return **キーワードを追加しました。 –

0

複数のステートメントでクエリを作成します。

これは(間違いなく)拡張メソッドでこれを構築するために容易になります。

var query = DataContext.Users.AsQueryable(); 

if (excludeHeadOffice) 
    query = query.Where(x => x.location != "ho"); 
else if (location != null) 
    query = query.Where(x => x.location == location); 

if (role != null) 
    query = query.Where(x => x.role == role); 

return query; 

ここでの考え方は、あなたがベースのクエリ「私にすべてを取得」で始まるということで、もしであなたがそれに追加し続けますステートメント。

関連する問題