我有一个看起来像这样的控制器方法
//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);
}
}
}
o它为每个变量生成一个值,例如osiItemCost [s.ID]对于一个站点ID可以等于0,对于另一个站点ID可以等于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
为什么引起问题?
答案 0 :(得分:4)
使用model.OffReportColumns[s.ID]
时,您将使用索引s.ID
引用单个字符串。使用model.OffReportColumns
时,是在引用整个列表。
您不能将model.OffReportColumns[s.ID]
设置为等于new List<string>()
,因为List<string>
不是string
答案 1 :(得分:0)
目前还不清楚您要在这里做什么。似乎OffReportColumns是一个字符串列表,您正在尝试将一个字符串列表添加到该字符串的某个索引中。
如果您这样做
model.OffReportColumns.AddRange(new List<String>(){
s.Name,
"string test",
"etc."
})
您会将新字符串列表的所有项目添加到OffReportColumns的末尾。