これは、この問題の一部を解決し、私は尋ねた別の質問へのルートを持っている - 今、私は次のように全体のロジックを記述しようとしていますこれを1つのlinqクエリに書き込みますか?
-
var divisions = (
from DataRow row in results.Rows
let section = row["SECTION"].ToString()
orderby section ascending
select section).Distinct();
string result = String.Empty;
foreach (string div in divisions)
{
result = String.Concat(result, div, Environment.NewLine);
var query =
from DataRow row in results.Rows
let remarks = row["REMARKS"].ToString()
let exam = row["EXAM_NAME"].ToString()
let rollno = row["ROLL_NO"].ToString()
let section = row["SECTION"].ToString()
where (remarks == "Passes" || remarks == "Promoted") &&
exam == "TOTAL" && section == div
orderby rollno
select rollno;
result = String.Concat(result,string.Join(" ", query.ToArray()),
Environment.NewLine);
}
基本的に、オリジナルのデータテーブルには、Divisionを含むさまざまな情報を含む一連の行があります。私は、すべての部門が新しいラインに現れる単一の文字列を作成したいと考えています。そして、その部門のロール番号はコンマ区切りで表示されます。次の行を次の行に区切るなど。 (ここではセクションとディビジョンは相互運用可能な用語です)。
最初のクエリの結果をループするのではなく、1つのlinqクエリでこれを書くにはどのような方法もありますか?
EDIT:
データ(フィルタ条件で使用されている他の列に言及していない)
Roll_no Section.. other cols
001 A
002 A
001 B
003 A
004 B
006 B
これは、出力がどのように見えるかである - (ロールが無いだけ部門内で一意です、しかし、それはどのような方法でのロジックに影響を与えるべきではない)
A
001 002 003
B
001 004 006
文字列がそのままの形式であるとき、これは 'A \ rを\ N001 002 003 \ rを\ nBは\ rを\ N001 004 006' のようになります。
注:上記のコードは動作します。私はもっと良いアプローチを探しています。
希望する出力の例を表示するために質問を更新できますか? – Steven
質問データをサンプルデータと期待通りの出力である –