Динамический Взятие в LINQ к Сущностям?

Допустим, у меня есть следующие таблицы:

Category: ID, Name, Limit
News: ID, Title
Relation: CID, NID

Я хочу выбрать верхние "x" новости из таблицы новостей с CID, CName, и "x" зависит от Category.Limit. Например,

Category

ID        Name         Limit
1         A            2
2         B            3

News

ID        Title
1         News 1
2         News 2
3         News 3
4         News 4

Relation

CID       NID
1         1
1         2
1         3
2         4
2         3
2         2
2         1

Тогда у нас будет результат:

CID          CName        NID          NTitle

1            A            1            News 1
1            A            2            News 2
2            B            4            News 4
2            B            3            News 3
2            B            2            News 2

Можно ли добиться результата только с одним запросом linq? Если нет, то процедура магазина?

Любая помощь будет оценена!

1 ответ

Если я вас правильно понимаю, для каждой категории вы хотите иметь первый x новости, где x это предел этой категории.

var result = context.Categories
                    .SelectMany(c => c.News
                                      .Take(c.Limit)
                                      .Select(n => new
                                                   {
                                                       CID = c.CID, 
                                                       CName = c.CName,
                                                       NID = n.NID,
                                                       NTitle = n.NTitle
                                                   }));

Этот ответ предполагает, что Category сущность содержит свойство навигации News который содержит все новости, которые относятся к категории.

Другие вопросы по тегам