【发布时间】:2011-01-05 14:08:09
【问题描述】:
我从系统中的查询中检索到大量自定义对象。假设这些对象都有 5 个不同的属性 - FirstName、LastName、Gender、ZipCode 和 Birthday。对于每个不同的属性,我希望能够获得所有唯一值及其计数的列表,并按降序对它们进行排序。它是一种多面导航系统。因此,如果我在初始查询中有 5000 个结果,那么我希望能够显示从最受欢迎到最不受欢迎的前 10 个名字以及旁边的计数。然后与其他属性相同。
目前我有一个例程,一次检查每个项目并检查不同的属性并保存一堆不同的哈希表和信息。它有效,但速度非常慢。我认为一次通过每个项目不是很有效。是否有其他类型的 C# 结构可以让我更轻松地获取此类信息?我知道 SQL Server 在这类事情上做得很好——但我不认为这真的是一种可能性。我正在从不同系统的 API 获取我的自定义对象列表。因此,我将不得不获取该对象列表并以某种方式将它们放入临时表中,这与我认为的目的背道而驰。另外,我认为 SQL Server 临时表是特定于连接的,我的应用程序会重用连接。
编辑:我要避免的是必须遍历列表并处理每个单独的项目。我想知道是否有一些数据结构可以让我一次查询整个列表(如数据库)并获取信息。问题是我们的前端网络服务器刚刚受到重创,因为我们在服务器上有大量流量,人们正在访问这些分面导航页面,我正在寻找一种更有效的方法。
有什么想法吗?
谢谢, 科里
【问题讨论】:
-
为什么不在你的系统in查询中执行计数和排序?
-
这是一个外部系统。我无法在那里进行计数和排序。我只能通过外部系统的 API 访问数据。所以我只能做以下事情 - List
_results = SystemAPI.GetResults();然后,一旦我有了那个 MyObjects 列表,我就需要弄清楚我有多少不同的属性。 -
“我认为一次检查每个项目效率不高。” - 如果有人想出更好的方法,他们确实会变得非常富有。
标签: c# data-structures unique