Что такое запрос LINQ для поиска в связанных (1: m) записях определенной строки? - PullRequest
0 голосов
/ 07 октября 2011

Я думал, что найду ответ с готовностью, но не так далеко. У меня есть связанные таблицы - блог и теги. Схема тегов выглядит следующим образом:

TagTableID (identity column)
BlogID (foreign key)
Tag (string)

Таблицы связаны в SQL Server. Каждая запись блога может иметь несколько тегов, и каждый тег для записи блога создает новую запись в таблице тегов. Я хочу найти записи блога, в которых есть определенные теги. Я могу сделать это в Linq:

var blogQuery =
            from blogentry in blog.blogs
            where blogentry.Tags = [??]
            select blogentry;

Поскольку в одной записи блога имеется несколько тегов, blogentry.Tags доступна в Linq и возвращает EntitySet. Но я не знаю, как искать (я думаю) в результирующей коллекции, чтобы найти конкретную строку. (Бит, где написано [??] в приведенном выше примере.)

Я подозреваю, что это требует более сложного запроса, но это то, с чего я начал ...

1 Ответ

3 голосов
/ 07 октября 2011

Я полагаю, вы используете Linq 2 SQL или Linq 2 Entities?

Я не проверял это, но я полагаю, что что-то вроде этого должно работать:

var tagsToLookFor = new[] {"tag1", "tag2"}; 

var blogQuery = 
        from blogentry in blog.blogs 
        where blogentry.Tags.Any(t => tagsToLookFor.Contains(t.Tag))
        select blogentry; 

Хотя проверьте полученный SQL с помощью SQL profiler.

...