2010-11-23 20 views
1

私はユーザーの入力に基づいてLinqクエリを作成しようとしています。 SQLを書く私は選択された値に基づいてSQLの選択文字列を構築することができますが、linqをSQLにする方法はわかりません。私はlinqをSQLクラスに使用しています。ここには何がありますか動的linqからSQLクエリへの構築

 // Locals 
     TalentDBDataContext talentDB = new TalentDBDataContext() 
     int minAge = 0; 
     int maxAge = 120; 
     bool maleChecked = false; 
     bool femaleChecked = false; 
     List<string> ethnicities = new List<string>(); 
     List<string> states = new List<string>(); 

     var formData = Request.Form; 
     foreach (string key in formData.AllKeys) 
     { 
      string val = formData[key]; 
      switch(key) 
      { 
       case "AgeMinTxBx": 
        minAge = Int32.Parse(val); 
        break; 
       case "AgeMaxTxBx": 
        maxAge = Int32.Parse(val); 
        break; 
       case "GenderMaleCB": 
        maleChecked = true; 
        break; 
       case "GenderFemaleCB": 
        femaleChecked = true; 
        break; 
       case "EthnicitySelector": 
        ethnicities = val.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries).ToList(); 
        break; 
       case "StateSelector": 
        states = val.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries).ToList(); 
        break; 
       default: 
        break; 
      } 
     } 

     var results = 
      from t in talentDB.Talent 
      (femaleChecked == true) ? where t. // I don't thing this will work.. 

これを行う方法はありますか?これが理にかなってほしい。私はintellisense linqが提供し、エラーチェックも好きです。おそらく、まだ、正規のSQLの選択文字列を書く方法があり、私はこの状況でそれを行うことができます。ありがとう

+0

あなたのクエリを(おそらくSQLのように)見せたいですか?また、私はforeachスイッチの構築が少し怖いことがわかります。 'minAge = int.Parse(formData [" AgeMinTxBx "]);'ステートメント? – Steven

答えて

0

ExecuteQueryメソッドを使用して、そのデータベースで直接SQLクエリを実行できます。

+0

ニース!カッコいい。 ExecuteQueryが効率的であることが分かっていますか? – RayLoveless

+0

IEnumerable tResults = talentDB.ExecuteQuery ( "Select * from Talent"); – RayLoveless

関連する問題