gpt4 book ai didi

.net - LINQ中的“Most popular” GROUP BY?

转载 作者:行者123 更新时间:2023-12-03 09:06:45 25 4
gpt4 key购买 nike

假设有一个标签表,如stackoverflow问题标签:

TagID (bigint), QuestionID (bigint), Tag (varchar)



使用LINQ获取25个最常用标签的最有效方法是什么?在SQL中,一个简单的GROUP BY可以做到:
SELECT Tag, COUNT(Tag) FROM Tags GROUP BY Tag

我写了一些有效的LINQ:
var groups = from t in DataContext.Tags
group t by t.Tag into g
select new { Tag = g.Key, Frequency = g.Count() };
return groups.OrderByDescending(g => g.Frequency).Take(25);

真的吗?这不是很冗长吗?可悲的是,我这样做是为了保存大量查询,因为我的Tag对象已经包含了Frequency属性,如果我实际使用过该属性,则需要针对每个Tag向数据库进行查询。

因此,然后将这些匿名类型解析回Tag对象:
groups.OrderByDescending(g => g.Frequency).Take(25).ToList().ForEach(t => tags.Add(new Tag()
{
Tag = t.Tag,
Frequency = t.Frequency
}));

我是LINQ新手,这似乎不对。请告诉我它是如何完成的。

最佳答案

我很确定你做对了。而且,LINQ生成并发送到数据库的SQL看起来就像刚开始使用的SQL一样,因此当您进行更多输入时,数据库将不再进行任何工作。

关于.net - LINQ中的“Most popular” GROUP BY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/250867/

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