无法将类型列表转换。<string>转换为字符串错误

时间:2020-03-12 16:52:25

标签: c# asp.net-mvc linq

我有一个看起来像这样的控制器方法

//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为什么引起问题?

2 个答案:

答案 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的末尾。