2013-12-12 3 views
8

나는 기업 내 상황의 "POST"와 다음 한 :Entity Framework 6에서 검색을 수행하는 방법은 무엇입니까?

String[] keywords = new String[] { "Car", "Yellow" }; 

어떻게하는 타이틀이 단어가 포함 된 모든 게시물을 검색 할 수 있습니다?

참고 : 키워드의 단어 수는 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 

그리고 여기 내 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에서 사용할 수 있습니까?

UPDATE

다음 haim770 제안은 내가 시도 다음

Context context = new Context(); 
String[] words = new String[] { "Car" }; 
List<Post> 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 LIKE 쿼리

는 미구엘 같은

+0

의 예를 게시하세요 컨텍스트 및 게시물 엔터티. – Maess

답변

11

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))) 
+0

나는 그것이라고 생각합니다 ... 그리고 당신의 예에서는 Any가 OR입니다. 내가 ALL을 사용한다면 나는 얻을 것이다. 어떻게 생각해? –

+0

답변을 업데이트했습니다. –

7

뭔가를 주셔서 감사합니다.

전체 텍스트 검색 기능을 사용하려면 먼저 데이터베이스에서 명시 적으로 활성화해야합니다 (Express 버전을 사용하는 경우 설치해야 할 수도 있음). 일부 솔루션을 사용하여 통합하십시오 Entity Framework (아마 Entity Framdwork 6 'Interceptors')를 사용합니다.

+0

키워드가 "Leao"이고 제목이 "leão"이면 문제가 하나도 무시되고 특수 문자는 무시해야합니다. 따라서 "a"또는 "â"는 동일합니다. 내가 할 수 있을까? –

+1

콜레 션 컬럼에 따라 다릅니다. 'Title' 칼럼의'SQL_Latin1_General_CP1_CI_AI' 데이터 정렬은 'Leao'와 'leao'를 반환합니다. – haim770

+0

데이터 정렬을 열로 설정할 수 있습니까? 아니면 데이터베이스 전체를 설정해야합니까? 그렇다면 어떻게해야합니까? 아십니까? 방금 SQL 코드를 추가했습니다. 내 T-SQL에서 이것을 설정 한 다음 SQL 서버에서 결정하도록하는 것이 더 낫습니다. 맞습니까? –

관련 문제