2010-11-23 126 views
1

我想创建一个基于用户输入的Linq查询。编写SQL我可以建立一个基于选择的值,但与LINQ到SQL的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 select字符串,而且我可以在这种情况下使用它。谢谢

+0

向我们展示您希望您的查询看起来像(也许在SQL中)。另外,我发现foreach-switch结构有点吓人。任何你没有使用的理由:`minAge = int.Parse(formData [“AgeMinTxBx”]);`语句? – Steven 2010-11-23 07:48:34

回答

0

您可以使用ExecuteQuery方法直接对该数据库执行SQL查询。

+0

不错!这很酷。你知道ExecuteQuery是否应该有效吗? – RayLoveless 2010-11-23 16:21:19