动态接纳LINQ到实体?

时间:2011-06-21 09:21:52

标签: sql-server linq dynamic data-retrieval

假设我有以下表格:

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

我想从带有CID,CName的新闻表中选择顶级'x'新闻,而'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

只有1个linq查询才能实现结果吗?如果不是那么商店程序?

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,对于每个类别,您希望获得第一个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,其中包含属于某个类别的所有新闻。