Linq to sql 构建动态linq到sql查询

Linq to sql 构建动态linq到sql查询,linq-to-sql,dynamic,Linq To Sql,Dynamic,我正在尝试根据用户的输入创建一个Linq查询。编写sql我可以基于所选的值构建一个sql选择字符串,但是使用linq to sql我不知道如何实现。我正在使用linq到sql类。这是我的 // Locals TalentDBDataContext talentDB = new TalentDBDataContext() int minAge = 0; int maxAge = 120; bool maleChecke

我正在尝试根据用户的输入创建一个Linq查询。编写sql我可以基于所选的值构建一个sql选择字符串,但是使用linq to 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.. 
//局部变量
TalentDBDataContext talentDB=新的TalentDBDataContext()
int minAge=0;
int-maxAge=120;
bool=false;
bool femaleChecked=错误;
列表种族=新列表();
列表状态=新列表();
var formData=Request.Form;
foreach(formData.AllKeys中的字符串键)
{
字符串val=formData[key];
开关(钥匙)
{
案例“AgeMinTxBx”:
minAge=Int32.Parse(val);
打破
案例“AgeMaxTxBx”:
maxAge=Int32.Parse(val);
打破
“性别平等”案:
maleChecked=正确;
打破
“性别平等”案:
femaleChecked=true;
打破
案例“种族选择器”:
ethnicities=val.Split(新字符[]{',},StringSplitOptions.removeMptyEntries.ToList();
打破
案例“状态选择器”:
states=val.Split(新字符[]{',},StringSplitOptions.RemoveEmptyEntries.ToList();
打破
违约:
打破
}
}
风险值结果=
来自t in talentDB.Talent
(femaleChecked==真)?其中t.//我认为这行不通。。

我有办法做到这一点吗?希望这是有意义的。我喜欢linq提供的intellisense和错误检查。也许还有一种方法可以编写常规的sql选择字符串,在这种情况下我可以这样做。谢谢

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

告诉我们您希望查询的样子(可能是SQL)。另外,我发现foreach开关的构造有点吓人。不只是使用的任何原因:
minAge=int.Parse(formData[“AgeMinTxBx]”)语句?很好!那很酷。你知道ExecuteQuery是否应该是高效的吗?IEnumerable tResults=talentDB.ExecuteQuery(“从人才中选择*);