Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何在实体框架6中执行搜索?_Entity Framework - Fatal编程技术网

Entity framework 如何在实体框架6中执行搜索?

Entity framework 如何在实体框架6中执行搜索?,entity-framework,Entity Framework,我在我的上下文中有一个实体“POST”,如下所示: String[] keywords = new String[] { "Car", "Yellow" }; public class Post { public Int32 Id { get; set; } public DateTime Created { get; set; } public String Text { get; set; } public String Title { get; set; } publ

我在我的上下文中有一个实体“POST”,如下所示:

String[] keywords = new String[] { "Car", "Yellow" };
public class Post {
  public Int32 Id { get; set; }
  public DateTime Created { get; set; }
  public String Text { get; set; }
  public String Title { get; set; }
  public DateTime Updated { get; set; }
} // Post
Context context = new Context();
String[] words = new String[] { "Car" };
List<Post> posts = context.Posts.Where(x => words.Contains(x.Title).ToList();
如何搜索所有标题包含这两个单词的帖子

注意:关键字可以有1到4个单词

邮政实体如下:

String[] keywords = new String[] { "Car", "Yellow" };
public class Post {
  public Int32 Id { get; set; }
  public DateTime Created { get; set; }
  public String Text { get; set; }
  public String Title { get; set; }
  public DateTime Updated { get; set; }
} // Post
Context context = new Context();
String[] words = new String[] { "Car" };
List<Post> posts = context.Posts.Where(x => words.Contains(x.Title).ToList();
下面是我的SQL:

create table dbo.Posts
(
  Id int identity not null 
    constraint PK_Posts_Id primary key clustered (Id),
  Created datetime not null,
  [Text] nvarchar (max) not null,
  Title nvarchar (120) not null,
  Updated datetime not null
);
我一直在研究SQL中的LIKE,但实体框架中的等价物是什么

我需要全文搜索吗?它在SQL Server 2012 Express中可用吗

更新

根据haim770的建议,我尝试了以下方法:

String[] keywords = new String[] { "Car", "Yellow" };
public class Post {
  public Int32 Id { get; set; }
  public DateTime Created { get; set; }
  public String Text { get; set; }
  public String Title { get; set; }
  public DateTime Updated { get; set; }
} // Post
Context context = new Context();
String[] words = new String[] { "Car" };
List<Post> posts = context.Posts.Where(x => words.Contains(x.Title).ToList();
Context Context=newcontext();
String[]words=新字符串[]{“Car”};
List posts=context.posts.Where(x=>words.Contains(x.Title.ToList();
没有回复带有这个的帖子…知道吗

谢谢,, 米格尔

类似于:

var keywords = new[] { "Car", "Yellow" };
var results = context.Posts.Where(x => keywords.Contains(x.Title));
上面将发出一个类似于的SQL
查询

如果您想要全文搜索功能,首先,您必须在数据库中显式启用它(如果您使用的是Express版本,则可能需要安装它),然后使用一些解决方案将其与Entity Framework集成(可能使用Entity Framdwork 6“拦截器”)。

您可以尝试此方法

var keywords = new String[] { "Car", "Yellow" }.ToList();

var p = db.Posts.Where(q => keywords.Any(k => q.Title.Contains(k)));
而且,如果您正在寻找包含关键字列表中所有单词的标题,那么正如您所说:

var p = db.Posts.Where(q => keywords.All(k => q.Title.Contains(k)))

请发布一个你的上下文和帖子实体的例子。我遇到的一个问题是,如果关键词是“Leao”,标题中的关键词是“leão”…那么我需要忽略大小写,忽略特殊字符。所以“a”或“ã”是一样的。我可以这样做吗?这取决于列排序。
SQL\u Latin1\u General\u CP1\u CI\u AI
Collation您的
Title
列将同时返回'Leao'和'leão'。我可以将排序设置为一列吗?还是应该设置为整个数据库?如果是,我怎么做?您知道吗?我刚刚添加了我的SQL代码。我想更好要在我的T-SQL上设置此选项,然后让SQL server决定,对吗?排序规则是另一个问题。查询建议看起来不错。您可以将排序规则设置为特定列:
[Text]nvarchar(max)整理SQL\u Latin1\u General\u CP1\u CI\u AI NOT NULL
。我想就是这样……在你的例子中,Any是OR。如果我使用ALL,那么我会得到And。你认为呢?