2017-12-28 67 views
3

주어진 List<string> 목록에서 하나 이상의 단어가 포함 된 필드가있는 엔터티의 모든 레코드를 반환하는 방법. Linq 필드에 목록의 단어가 하나 이상 포함 된 엔터티의 모든 레코드를 반환합니다.

나는 작동하지 않는 아래를 시도하고 난 빙빙 조금 이동하기 시작 해요 :

List<string> searchwords = new List<string>() {"word1","word2"}; 

var results = context.activities 
    .Where(a => a.Title.Contains(searchwords.Any().ToString())).ToList(); 

답변

5

현재 코드의 문제 :

var results = context.activities.Where(a => 
        a.Title.Contains(searchwords.Any().ToString())).ToList(); 

당신이 가지고있다 바늘과 건초 더미. .ToString()Any()으로 전화해야한다는 사실은 당신에게 알려줄 것입니다. Any()bool을 반환합니다.이 문자열은 문자열로 변환되므로 Title에 "True"라는 문자열이 있는지 여부 만 확인하면됩니다. 확실히 당신이 원하는 것이 아닙니다. 너는 더 가까운 것을 원한다 :

var results = context.activities 
       .Where(a => searchwords.Any(searchWord => a.Title.Contains(searchWord)));