我正在尝试创建一个二维数组,但我很困惑。一位同事告诉我,我需要在字典中为数组列表创建一个字典,但他无法留下来帮助我。
我已经能够创建列出这样的程序的第一个数组
+ 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 在会计期间循环,但它不起作用。我想我可能走在正确的轨道上,我希望 SO 可以提供一些指导,或者至少是一个教程供我学习。我已经在下面的第二个数组上发布了到目前为止我编写的代码。我正在使用 C# 和 MVC 3。您可能会注意到它们不是字典中的字典。如果我的同事是正确的,我将如何做这样的事情,我使用字典作为其他字典中的键来查看这个问题,但我不明白在这种情况下我将如何使用它。
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;
}
我希望我已经清楚地解释了我的问题,请随时要求任何需要的澄清,因为我需要解决这个问题,并且会经常回来查看。谢谢你的帮助!