2016-09-27 14 views
0

3つの検索テキストボックス値があります。私は各変数のstring.isnullorEmptyをチェックする必要があり、linqクエリと比較する必要があります。linqクエリを使用して複数のif条件なしの条件を生成する方法

マイテキスト値:

  1. メーカー

  2. プロジェクトコード

  3. PARTNO

条件:

  1. 私は私が、私は結果を取得する必要があります任意の2を入力した場合、私は結果

  2. を取得する必要があります3つのボックスの値を入力した場合、私は結果

  3. を取得する必要があります上記のいずれかを検索した場合。

私のコードこのため、ダイナミック句を作る方法を、複数の条件を避けるために

if (!string.IsNullOrEmpty(manufacturer)) 
     { 
      var filteredResult = _entity.MaterialMasters.Where(x => x.Manufacturer == manufacturer); 
     } 
if (!string.IsNullOrEmpty(projectcode)) 
     { 
      var filteredResult = _entity.MaterialMasters.Where(x => x.ProjectCode== projectcode); 
     } 
if (!string.IsNullOrEmpty(part)) 
     { 
      var filteredResult = _entity.MaterialMasters.Where(x => x.Part== part); 
     } 

を次のように?このための解決策を見つけるしてください。..

+0

ような何かをしたいと思います – Lucas

答えて

1

をあなただけWhere

複数にタグを付けることができ
var filteredResult = _entity.MaterialMasters; 
if (!string.IsNullOrEmpty(manufacturer)) 

    filteredResult = filteredResult.Where(x => x.Manufacturer == manufacturer); 
} 
if (!string.IsNullOrEmpty(projectcode)) 

    filteredResult = filteredResult.Where(x => x.ProjectCode == projectcode); 
} 
if (!string.IsNullOrEmpty(part)) 

    filteredResult = filteredResult.Where(x => x.Part == part); 
} 

彼らはあなたが1、2またはパラメータの3を供給することができ、あなたがよということを意味し、累積的に動作します適切な結果を得る。

0
var filteredResult = 
       _entity.Where(
       ent => 
       (!string.IsNullOrEmpty(manufacturer) && ent.Manufacturer == manufacturer) 
       || (!string.IsNullOrEmpty(projectcode) && ent.ProjectCode == projectcode) 
       || (!string.IsNullOrEmpty(part) && ent.Part == part)); 

これは、製造元、プロジェクトコード、および部品の検索結果を1か所で取得します。

2

彼はif文を取り除き、これをすべてlinqクエリとして書きたいと考えています。私はあなたが公共の静的IEnumerableを WhereTest (このIEnumerableを 、のFunc ...) ``のような独自のデリゲートの拡張メソッドを作成することができ、この

.Where(
s => 
(string.IsNullOrEmpty(manufacturer) | (s.Manufacturer == manufacturer)) && 
(string.IsNullOrEmpty(projectcode) | (s.ProjectCode == projectcode)) && 
(string.IsNullOrEmpty(part) | (s.Part== part)) 
).ToList(); 
関連する問題