假设我有以下表格:
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查询才能实现结果吗?如果不是那么商店程序?
任何帮助都将不胜感激!
答案 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
,其中包含属于某个类别的所有新闻。