문자열 배열을 매개 변수로 사용하고 문자열 컬렉션 인 컬렉션 속성에 대해 쿼리하는 메서드가 있습니다. 해당 속성에 매개 변수로 전달 된 문자열 배열 안에있는 값 중 하나가 있으면 반환해야합니다. 여기 컬렉션 매개 변수가있는 컬렉션 속성에 대한 Linq 쿼리
내 코드입니다 :public IEnumerable<BlogPost> GetAll(string[] tags,
bool includeUnapprovedEntries = false) {
foreach (var tag in tags) {
foreach (var blogPost in GetAll(includeUnapprovedEntries).
ToList().Where(x => x.Tags.Any(t => t == tag))) {
yield return blogPost;
}
}
}
참고 : 여기에
는 전체 코드입니다 : '
이는 일을하지만, 그것은 단지 아무튼 맞는 것 같습니다. 일부 확장 메서드를 사용하면이 기능을 향상시킬 수 있었지만 트릭을 수행하고 구현을 올바르게 수행 할 수 없었습니다.
아이디어가 있으십니까? 이것에 대해
아, 지금은 너무 기분이 좋지 않습니다. 더 이상 오전 1시 이후에 코딩하면 안된다. 감사! – tugberk
@tugberk : 실제로 * 작동 *했는지 확인 했습니까? 시도 할 때까지 그것을 가정하지 마십시오 :) LINQ to Objects가 어떻게 동작 할 것인지 예측하는 것이 합리적입니다.하지만 Entity Framework에서 거의 경험이 없습니다 (본질적으로 nil). –
또한이 쿼리는 실제로 SQL Server에 전달되지 않는다고 언급해야합니다. 세미콜론으로 구분 된 문자열 위에 태그 콜렉션을 만들었습니다 (https://github.com/tugberkugurlu/MvcBloggy/blob/master/src/MvcBloggy.Data/DataAccess/SqlServer/Model/BlogPost.cs). 그래서 GetAll을 사용하여 전체 데이터를 가져옵니다 (예, 정말 나쁜 접근이지만 다른 방법을 찾아 낼 수 없었습니다). 그래서, 대부분 Linq to Objetcs입니다. – tugberk