這有它的根到另一個問題,我問,是解決這個問題的一部分 -寫入一個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。我想要創建一個單一的字符串,每個部門出現在一個新的行中,並且在該部分之後的分號以逗號分隔的方式顯示。下一行的下一個分區,等等。 (這裏部分和部分是可互操作的術語)。
是否有任何優雅的方式來寫這與一個linq查詢,而不是循環通過第一個查詢的結果?
編輯:
數據(不提的是,在過濾條件中的其它列)
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 2010-12-13 11:17:18
我已經更新了樣本數據和預期輸出 – 2010-12-13 11:47:55