Динамический Взятие в LINQ к Сущностям? - PullRequest
0 голосов
/ 21 июня 2011

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

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 Ответ

0 голосов
/ 21 июня 2011

Если я правильно вас понимаю, для каждой категории вам нужны первые 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, которое содержит все новости, относящиеся к категории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...