gpt4 book ai didi

linq - 如何在 LINQ 中正确使用 GroupBy?

转载 作者:行者123 更新时间:2023-12-03 23:58:17 27 4
gpt4 key购买 nike

我有 4 个表:Post、Category、Relation 和 Meta

A category可以包含多个 posts ,它们之间的关系存储在 Relation table 。一个帖子可以有许多额外的信息存储在 Meta 中。 table 。我想列出所有带有类别和额外信息的帖子,然后按帖子的 ID 将它们分组。

我有以下查询

select p.ID, p.Title, t.Name, m.Key, m.Value from Post p
left join Relation r on p.ID = r.Child
left join Category c on r.Parent = c.ID
left join Meta m on p.ID = m.Object
where m.Type = 'news'
order by p.ID

并使用这些示例数据:
Post

ID Title

1 A

Category

ID Name

1 Tips
2 Tricks

Meta

ID Object Key Value

1 1 Key1 Value 1
2 1 Key2 Value 2

Relation

ID Child Parent

1 1 1
2 1 2

那么结果将是
PostID      Title     Category       Key      Value

1 A Tips Key1 Value1
1 A Tips Key2 Value2
1 A Tricks Key1 Value1
1 A Tricks Key2 Value2

我希望结果是
PostID      Title     Categories               Meta

1 A Tips, Tricks Key1=Value1, Key2=Value2

我想知道我们是否可以将查询从 SQL 转换为 LINQ to Entities使用 EF v4,结果存储在这样的类中
class Result
{
long ID,
string Title,
List<string> Categories,
Dictionary<string, string> Meta
}

任何帮助将不胜感激。

最佳答案

您期望从查询中得到的最终结果是什么
我个人更喜欢写这样的查询

 var q = from r in Relation
join p in Post on r.Child equals p.ID
join t in Term on r.Parent equals t.ID
let x = new { p.ID, p.Title, t.Name }
group x by x.ID into g
select g;

这样我认为(不确定)生成的sql会更简单

关于linq - 如何在 LINQ 中正确使用 GroupBy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434942/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com