我的上下文中有一个实体"POST",以下内容:
String[] keywords = new String[] { "Car", "Yellow" };
Run Code Online (Sandbox Code Playgroud)
如何搜索所有包含2个单词的标题?
注意:关键字可以包含1到4个单词.
邮政实体如下:
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
Run Code Online (Sandbox Code Playgroud)
这是我的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
);
Run Code Online (Sandbox Code Playgroud)
我一直在看SQL中的LIKE但实体框架中的等价物是什么?
我需要全文搜索吗?它是否可以在SQL Server 2012 Express中使用?
UPDATE
根据haim770的建议,我尝试了以下方法:
Context context = new Context();
String[] words = new String[] { "Car" };
List<Post> posts = context.Posts.Where(x => words.Contains(x.Title).ToList();
Run Code Online (Sandbox Code Playgroud)
这篇文章没有回复......任何想法?
谢谢你,米格尔
Ahm*_*him 11
你可以试试这个
var keywords = new String[] { "Car", "Yellow" }.ToList();
var p = db.Posts.Where(q => keywords.Any(k => q.Title.Contains(k)));
Run Code Online (Sandbox Code Playgroud)
而且,如果您正在寻找包含关键字列表中所有单词的标题,那么正如您所说:
var p = db.Posts.Where(q => keywords.All(k => q.Title.Contains(k)))
Run Code Online (Sandbox Code Playgroud)
就像是:
var keywords = new[] { "Car", "Yellow" };
var results = context.Posts.Where(x => keywords.Contains(x.Title));
Run Code Online (Sandbox Code Playgroud)
以上将发出SQL LIKE查询.
如果您想要全文搜索功能,首先,您必须在数据库中明确启用它(如果您使用的是Express版本,则可能必须安装它),然后使用一些解决方案将其与Entity Framework集成(可能使用Entity Framdwork 6'Interceptors').
| 归档时间: |
|
| 查看次数: |
11019 次 |
| 最近记录: |