У меня есть метод, который принимает массив строк в качестве параметра и запросов к свойству коллекции, который также представляет собой набор строк. Если это свойство имеет одно из значений внутри массива строк, переданное как параметр, оно должно быть возвращено.Запрос 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. –
Кроме того, я должен упомянуть, что этот запрос действительно не подходит для SQL Server. Я создал коллекцию тегов по строке, разделенной точкой с запятой (как она есть здесь: https://github.com/tugberkugurlu/MvcBloggy/blob/master/src/MvcBloggy.Data/DataAccess/SqlServer/Model/BlogPost.cs). Таким образом, он получает все данные с помощью «GetAll» (да, это очень плохой подход, но я не мог понять другого) и делает запрос на это. Таким образом, в основном Linq является Objetcs. – tugberk