代码之家  ›  专栏  ›  技术社区  ›  RayLoveless

构建动态linq-to-sql查询

  •  1
  • RayLoveless  · 技术社区  · 14 年前

    我试图基于用户的输入创建一个Linq查询。编写sql时,我可以根据选择的值构建一个sql select字符串,但是使用linqtosql时,我不知道如何实现它。我正在使用linq to 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字符串,在这种情况下我可以这样做。谢谢

    1 回复  |  直到 14 年前
        1
  •  0
  •   Mud    14 年前

    你可以使用 ExecuteQuery 方法直接在该数据库上执行SQL查询。