Asp.net 具有字符串列表的实体框架搜索记录?

Asp.net 具有字符串列表的实体框架搜索记录?,asp.net,sql,entity-framework,asp.net-mvc-4,Asp.net,Sql,Entity Framework,Asp.net Mvc 4,我有一个记录数据库,每个记录都有一个标题。我希望能够通过一个搜索字符串搜索这个数据库,该字符串将被分成一个列表或数组 例如,如果我使用“Book Dog”搜索,它将搜索所有标题中包含“Book”或“Dog”的标题 我使用的是实体框架,我想写下我想做的事情最简单的方法是 string[] words; var posts = (from p in ctx.posts where p.title.contains(words) select p).ToList(); 我尝试使用在线找到的Strin

我有一个记录数据库,每个记录都有一个标题。我希望能够通过一个搜索字符串搜索这个数据库,该字符串将被分成一个列表或数组

例如,如果我使用“Book Dog”搜索,它将搜索所有标题中包含“Book”或“Dog”的标题

我使用的是实体框架,我想写下我想做的事情最简单的方法是

string[] words;
var posts = (from p in ctx.posts
where p.title.contains(words)
select p).ToList();
我尝试使用在线找到的StringExtension,但会出现以下错误 LINQ to Entities无法识别方法“Boolean ContainsAny(System.String,System.String[])”方法,并且无法将此方法转换为存储表达式

分机是

public static bool ContainsAny(this string str, params string[] values)
    {
        if (!string.IsNullOrEmpty(str) || values.Length > 0)
        {
            foreach (string value in values)
            {
                if (str.Contains(value))
                    return true;
            }
        }

        return false;
    }

你在找这个吗

var posts = (from p in ctx.posts
    where words.Any(w => p.title.Contains(w))
    select p).ToList();
这就是你需要的:

ctx.posts.Where(post => words.Any(word => post.Title.Contains(word)))

我在搜索类似于您的问题(注册表)的内容,但我的问题是:如何查找我输入的(从文本框)全名是否与数据库中的记录完全相同

我试过这个,效果很好:

db.Users.Any(x => x.UserName.Equals(txtUsername.Text))
或者对于您的代码,如下所示:

ctx.posts.Any(x => x.title.Equals(words))
它可能对其他人有用