我想創建一個二維數組,我越來越困惑。一位同事告訴我,我需要在數組列表的字典中創建一本字典,但他無法堅持幫助我。創建一個二維數組
我已經能夠創建第一個陣列,列出這樣
+ project 1
+ project 2
+ project 3
+ project 4
,完成此任務的代碼的程序如下─是
var PGList = from x in db.month_mapping
where x.PG_SUB_PROGRAM == SP
select x;
//select x.PG.Distinct().ToArray();
var PGRow = PGList.Select(x => new { x.PG }).Distinct().ToArray();
這樣把我的垂直的護理數組,現在我需要添加水平數組,以便可以看到每個會計期間花費的總金額。所以最終的輸出看起來像這樣,但當然沒有破折號。
+ program 1-------100---200---300---400---500---600---700---800---900---1000---1100---1200
+ program 2-------100---200---300---400---500---600---700---800---900---1000---1100---1200
+ program 3-------100---200---300---400---500---600---700---800---900---1000---1100---1200
+ program 4-------100---200---300---400---500---600---700---800---900---1000---1100---1200
我試圖使用foreach循環會計期間,但它不起作用。我想我可能會走在正確的軌道上,我希望能夠提供一些指導,或者至少有一個教程讓我遵循。我已經發布了下面第二個數組中的代碼。我正在使用C#和MVC 3.您可能會注意到它們在字典中沒有字典。如果我的同事是正確的,我該如何做這樣的事情,我看了一下using dictionary as a key in other dictionary這個問題,但我不明白我會如何在這種情況下使用它。
Dictionary<string, double[]> MonthRow = new Dictionary<string, double[]>();
double[] PGContent = new double[12];
string lastPG = null;
foreach (var item in PGRow)
{
if (lastPG != item.PG)
{
PGContent = new double[12];
}
var MonthList = from x in db.Month_Web
where x.PG == PG
group x by new { x.ACCOUNTING_PERIOD, x.PG, x.Amount } into pggroup
select new { accounting_period = pggroup.Key.ACCOUNTING_PERIOD, amount = pggroup.Sum(x => x.Amount) };
foreach (var P in MonthList)
{
int accounting_period = int.Parse(P.accounting_period) - 1;
PAContent[accounting_period] = (double)P.amount;
MonthRow[item.PG] = PGContent;
lastPG = item.PG;
}
我希望我已經解釋清楚我的問題,請我需要解決這個問題,要經常檢查回隨意問了需要澄清。謝謝你的幫助!
非常感謝您的回覆,很抱歉,我一直無法儘快回覆您,但我正試着理解您給我的代碼。我遇到了foreach的問題,因爲我正在從Linq到SQL查詢獲取數據,所以我認爲我必須將它們轉換爲字典。 – Goldentp
@Goldentp,「有問題」是什麼意思?您可以將類似'Account'的類轉換爲LINQ。請發佈'month_mapping'的定義;如果它來自LINQ,您可以從調試器獲取定義。 –