Динамический Взятие в 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
который содержит все новости, которые относятся к категории.