非常に複雑な SQL クエリから得られる大きな結果セットがあります。値の中にはstring
、場所を表す があります (後で値の元のページの場所を特定するのに役立ちます)、int
行の他の値に基づいて行ごとに計算された優先度番号である 、およびstring
値を含む別の値があります。後で表示するために覚えておく必要があります。
問題は、SQL クエリが非常に複雑 (UNIONS、JOINS、およびエイリアスを使用した複雑な計算がある) であるため、その動作をいじらずに他のものを論理的に適合させることができないことです。
ただし、クエリが完了して計算が実行された後、おそらく集計関数で解決できるものが必要ですが、すべての列が他の集計関数から取得されているわけではないため、それはオプションではありません。
結果を反復処理し、値のペアをリスト (または何らかの方法で結合された 2 つの個別のリスト) に保存する方法について、私は何日も頭を悩ませてきました。ここで、1 つの値は各場所のすべての優先値の合計です。もう 1 つの値は個別の場所の値です (つまり、結果がループされるため、以前に使用された同じ場所の値を持つ別のリスト項目は作成されませんが、他のすべての値の合計が必要です。同一の場所からの優先度値)。また、結果は降順で優先度順に並べる必要があります (したがって、2 つのリストを使用する際の問題)。
例:
編集:忘れていましたが、保存された値は、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 の結果をループし、各場所の繰り返しをチェックし、すべての優先度の値をまとめて加算し、これら 2 つのプラスの値を 2 つまたは 3 つの個別のリストに格納します。
それでも助けが必要な理由
ロジックがうまくいかなかったので foreach を使用できません。またfor
、IEnumerable (またはDatabase.Open.Query()
、インデックスによって返されるものを格納する型) にアクセスできないため、ループを使用できません (これは理にかなっています)。 、もちろん). また、優先順位で並べ替える必要がありますが、1 つのリストを他のリストと同期させることはできません。
LINQ を使用して必要なものを選択して保存する
それでも助けが必要な理由
私はLINQを(まったく!)知りません。主な理由は、ラムダ式を理解していないからです(どれだけ読んでも)。
インスタンス化されたクラスを使用して名前と値のペアを格納する
それでも助けが必要な理由
この種の並べ替えが不可能であると予想するだけでなく、WebMatrix 環境で C#.net Web ページでファイルを使用する方法を今やってい.cs
ますが、主に静的クラスしか使用したことがなく、少し復習コースも必要です。コンストラクターとこれを適切に設定する方法について。
この機能を、すでに大規模で複雑な SQL クエリに何らかの方法で適合させる
それでも助けが必要な理由
これはおそらく私がこの機能を理想的に望んでいる場所ですが、これはオプションではないことをもう一度強調します. 集計関数を使用してみましたが、他のすべての列が集計関数から取得されたわけではないというエラーのみが表示されます。
最初のクエリの結果セットの値に基づいて別のクエリを作成する
それでも助けが必要な理由
1 つの列 (つまり、場所) だけに基づいて個別の結果を選択することはできません。
ループロジックを正しく取得でき、値を3次元配列に格納できると仮定します
それでも助けが必要な理由
配列を宣言することはできません。配列を使用する前にすべての次元がわからないからです。