gpt4 book ai didi

c# - 使用 LINQ 获取一个具有大部分子实体的实体

转载 作者:行者123 更新时间:2023-11-30 15:06:34 25 4
gpt4 key购买 nike

我在 Entity Framework 4 中有一个名为 Topic 的实体。 Topic 具有指向 Reply 实体集合的导航属性。

我正在尝试设计一个查询,以根据回复数量获取最受欢迎的主题。

entityContainer.Topics.Single(x => x./* has the most replies of any topic */);

我不确定如何设计查询来完成此任务。

最佳答案

这可能会完成您想要做的事情。

var mostPopularTopic = entityContainer.Topics
.OrderByDescending(t => t.Replies.Count())
.FirstOrDefault();

if(mostPopularTopic != null) // If there were any topics...
{
// ...
}

不过,我想这会带来糟糕的性能。

更好的选择可能是(稍微)对您的数据进行非规范化,并将回复计数列添加到 Topic 表中。然后你可以索引该列,并进行简单的排序和检索行。这将避免对 Topics 进行全表扫描,并避免对每个 Replies 条目进行计数(在查询时)。

权衡是您必须小心确保 Replies 计数始终得到更新,或者接受并不总是完全最新的结果并执行后台作业重建这些值(value)观。

关于c# - 使用 LINQ 获取一个具有大部分子实体的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7681355/

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