2016-04-16 22 views
1

LINQにWhere句を動的に作成する方法はありますか?C#動的Linq Where句

例...今日私はSQLデータベースにクエリを行い、ServerGroup Aだけに問題があります。私はそのグループのフォルトコードを返します。作品。しかし、明日、ServerGroup A & Bに問題があります。 LINQクエリを手動で変更するのではなく、新しいServerGroupをWHERE句に動的に追加する必要があります。これはLINQで可能ですか?私はSQLクエリでそれをやった。

大変感謝しています。

 var query = referenceDt.AsEnumerable() 
      .Where(results => results.Field<string>("ServerGroup") == "A" || 
          results.Field<string>("SeverGroup") == "B") 
      .GroupBy(results => new 
       { 
        FaultCode = results.Field<int>("FaultCode") 
       }) 
      .OrderByDescending(newFaultCodes => newFaultCodes.Key.FaultCode) 
      .Select(newFaultCodes => new 
      { 
       FaultCode = newFaultCodes.Key.FaultCode, 
       Count = newFaultCodes.Count() 
      }); 

答えて

1

これはSERVERGROUPSが動的に生成される.Contains()

var serverGroups = new string []{ "A", "B" }.ToList(); 

var query = referenceDt.AsEnumerable() 
     .Where(results => serverGroups.Contains(results.Field<string>("ServerGroup"))) 
     .GroupBy(results => new 
      { 
       FaultCode = results.Field<int>("FaultCode") 
      }) 
     .OrderByDescending(newFaultCodes => newFaultCodes.Key.FaultCode) 
     .Select(newFaultCodes => new 
     { 
      FaultCode = newFaultCodes.Key.FaultCode, 
      Count = newFaultCodes.Count() 
     }); 

のための完璧なユースケースです。

+0

ありがとうございました。完璧に働いた。 – EMIE

0

あなたはINのSQLと同等のためのLINQクエリでContainsを使用することができます。