【发布时间】:2020-03-12 16:52:25
【问题描述】:
我有一个看起来像这样的控制器方法
//cycles through sites in order to populate variables
foreach (Site s in sites)
{
foreach (OffSiteItemDetails d in s.ItemDetails)
{
if (d.itemID != null)
{
osiItemCost[s.ID] = d.qty * db.Items.Where(x => x.ID == d.itemID).FirstOrDefault().cost(1, false, false);
osiLoItemCost[s.ID] += d.qty * db.Items.Where(x => x.ID == d.itemID).FirstOrDefault().cost(1, false, true);
osiItemLastCost[s.ID] += db.Items.Where(x => x.ID == d.itemID).FirstOrDefault().cost(d.qty, true, false);
}
}
}
它为每个变量生成一个值,例如 osiItemCost[s.ID] 对于一个站点 ID 可能等于 0,但对于另一个站点它可能等于 70
所以我正在尝试为每个站点 ID 创建一个表。目前,如果我离开它喜欢 model.OffReportColumns = new List()
它只会被列表中的下一个站点 ID 覆盖。所以我正在尝试将列表分配给站点 ID。
foreach (Site s in sites)
{
foreach (OffSiteItemDetails d in s.ItemDetails)
{
model.OffReportColumns[s.ID] = new List<string>()
{
s.Name,
"",
"",
"Average Cost",
"",
"",
"Average Cost (With labour)"
};
这是我的模型类
public class SummaryReportModel
{
public string Title { get; set; }
public string ReportTitle { get; set; }
public string OffReportTitle { get; set; }
public List<string> ValuationColumns { get; set; }
public List<string> OffReportColumns { get; set; }
public List<List<string>> ValuationRows { get; set; }
public List<List<string>> OffReportRows { get; set; }
public List<List<string>> Total { get; set; }
public List<List<string>> OffReporTotal { get; set; }
public List<List<string>> Tital { get; set; }
public List<List<string>> SecondTital { get; set; }
public List<List<string>> osiGrandTotal { get; set; }
}
s.ID 代表“站点 ID”
目前我收到错误
不能隐式转换类型 'systems.collections.generic.List' 到 'string'
但是,当我删除 [s.ID] 使其看起来像这样时,它会起作用
model.OffReportColumns = new List<string>()
为什么s.ID 会导致问题?
【问题讨论】:
-
OffReportColumns表示字符串列表,然后OffReportColumns[0]给出字符串而不是字符串列表,可能您可以将类型List<string>更改为Dictionary<int, List<string>>和s.ID键。 -
model.OffReportColumns = new List<List<string>>()
标签: c# asp.net-mvc linq