我有一个来自非常复杂的 SQL 查询的大型结果集。在这些值中,一个string
代表一个位置(稍后将帮助我确定该值来自的页面位置),一个int
是根据该行中的其他值为每一行计算的优先级编号,另一个string
包含一个值我必须记住以后展示。
问题是 sql 查询非常复杂(它有 UNIONS、JOINS 和带有别名的复杂计算),以至于我无法在逻辑上将其他任何东西放入其中,而不会弄乱它的工作方式。
我只想说,在完成查询并执行计算之后,我需要一些聚合函数可能会解决的问题,但这不是一个选项,因为所有列都不是来自其他聚合函数。
几天来我一直在思考如何遍历结果,将一对值存储在一个列表中(或两个单独的列表以某种方式捆绑在一起),其中一个值是每个位置的所有优先级值的总和并且另一个值是一个不同的位置值(即,当结果循环通过时,它不会创建另一个具有以前使用过的位置值的列表项,但是,它仍然需要所有其他的总和来自相同位置的优先级值)。此外,结果需要按优先级以降序排列(因此使用两个列表存在问题)。
例子:
编辑:我忘了,保留的值应该是 sql 查询中具有最高优先级的行中的值。
如果我有以下结果:
location priority value
--------------------------------------------------------------------------------
page1 1 some text!
page2 3 more text!
page2 4 even more text!
page3 3 text again
page3 1 text
page3 1 still more text!
page4 6 text
如果我能够做我想做的事,我将能够在迭代后(并按此顺序)实现类似的目标:
location priority value
--------------------------------------------------------------------------------
page2 7 even more text!
page4 6 text
page3 5 text again
page1 1 some text!
我做了一个又一个的研究,但绝对没有什么能真正接近解决这个困境。
即使是强大的 C# 语言,我所要求的是否也太难了?
我考虑过的事情:
循环遍历 sql 结果并检查每个位置是否有重复,将所有优先级值加在一起,并将这两个加值存储在两个或三个单独的列表中。
为什么我仍然需要帮助
我不能使用 foreach,因为逻辑没有成功,我不能使用for
循环,因为我不能访问 IEnumerable (或存储Database.Open.Query()
索引返回内容的任何类型。(这是有道理的) ,当然)。另外,我需要按优先级排序,但不能让一个列表与其他列表不同步。
使用 LINQ 选择和存储我需要的内容
为什么我仍然需要帮助
我不知道 LINQ(根本不知道!)主要是因为我不懂 lambda 表达式(不管我读了多少)。
使用实例化的类来存储名称/值对
为什么我仍然需要帮助
我不仅希望对这类事情进行排序是不可能的,而且我现在知道如何.cs
在我的 C#.net 网页中使用 WebMatrix 环境中的文件,但我主要只使用过静态类,还需要一些进修课程关于构造函数以及如何正确设置它。
不知何故将此功能融入已经相当大且复杂的 SQL 查询中
为什么我仍然需要帮助
虽然这可能是我理想的功能所在,但我再次强调这不是一个选项。我曾尝试使用聚合函数,但只得到一个错误,说明并非所有其他列都来自聚合函数。
根据第一个查询结果集中的值进行另一个查询
为什么我仍然需要帮助
我不能仅根据一列(即位置)选择不同的结果。
假设我可以得到正确的循环逻辑,将值存储在 3 维数组中
为什么我仍然需要帮助
我不能声明数组,因为在需要使用它之前我不知道它的所有维度。