Asp.net mvc 使用提供的where条件查询数据库

Asp.net mvc 使用提供的where条件查询数据库,asp.net-mvc,Asp.net Mvc,在我的搜索表单中,我让用户指定要在特定列中搜索的列和单词 我得到的是一个键值映射,其中key=column和value=search words。我循环遍历这些键和值,并创建一个字符串(searchPhrase),以便在查询中使用。比如: var query = db.Persons. Where(searchPhrase); 但我不知道如何使用我的搜索短语作为where条件 下面是我如何循环浏览我的表单集合 public ActionResult Search(FormCollectio

在我的搜索表单中,我让用户指定要在特定列中搜索的列和单词

我得到的是一个键值映射,其中
key=column
value=search words
。我循环遍历这些键和值,并创建一个字符串(searchPhrase),以便在查询中使用。比如:

var query =
db.Persons.
Where(searchPhrase);  
但我不知道如何使用我的搜索短语作为where条件

下面是我如何循环浏览我的表单集合

public ActionResult Search(FormCollection collection)
{
    List<string> conditions = new List<string>();
    for (int i = 1; i <= 4; i++)
    {
        if (!String.IsNullOrEmpty(collection["columnName" + i]))
        {
            string s = String.Empty;
            s += collection["Attributes" + i].ToString();
            s += " = '";
            s += collection["searchWord" + i].ToString();
            s += "'";
            conditions.Add(s);
         }
    }
    searchPhrase = string.Join(" AND ", conditions.ToArray());
}  
公共操作结果搜索(FormCollection集合) { 列表条件=新列表();
对于(int i=1;i您应该看一看。

查询不是在动态linq之上吗?您看了链接了吗。您尝试执行动态linq查询和动态linq库(链接)允许您这样做。我不知道如何添加system.linq.dynamic?它是否包含在system.linq中,因为我有。我必须单独添加动态位吗?下载c#示例,将
DynamicLibrary.cs
文件导入到您的项目中,您就完成了。然后使用system.linq.dynamic添加
(在cs中定义)并使用现在可用的扩展方法。使用dynamic它仍然不起作用。该查询不起作用吗?
db.Persons.Where(“姓氏像‘bob’,姓氏像‘stone’”)
这是LINQ查询吗?如果是SQL查询,那么通过连接这样的字符串,您的系统很容易受到SQL注入攻击。呃。您不能提供UI的屏幕截图,我们会建议更好的选项。这太疯狂了。我希望它是LINQ查询,但我不确定如何让用户指定列和仍然使用LINQ。没有必要连接字符串,但这是我能想到的唯一方法,或者你知道另一种方法吗?