Невозможно преобразовать список типов. <string>в строковую ошибку - PullRequest
0 голосов
/ 12 марта 2020

У меня есть метод контроллера, который выглядит следующим образом

//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] может равняться 0 для одного идентификатора сайта, но может равняться 70 для другой сайт

Поэтому я пытаюсь создать таблицу для каждого идентификатора сайта. В настоящее время, если я оставлю это как model.OffReportColumns = new List ()

Это будет просто перезаписываться следующим идентификатором сайта в списке. Поэтому я пытаюсь присвоить список идентификаторам сайтов.

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)"
            };      

Вот мой класс Model

 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 представляет "идентификатор сайта"

В настоящее время я получаю сообщения об ошибках

Не удается неявно преобразовать тип 'systems.collections.generi c .List' в 'string'

Однако это работает, когда Я удаляю [s.ID], чтобы он выглядел следующим образом

model.OffReportColumns = new List<string>()

Почему s.ID вызывает проблему?

Ответы [ 2 ]

4 голосов
/ 12 марта 2020

Когда вы используете model.OffReportColumns[s.ID], вы ссылаетесь на отдельную строку с индексом s.ID. Когда вы используете model.OffReportColumns, вы ссылаетесь на весь список.

Вы не можете установить model.OffReportColumns[s.ID] равным new List<string>(), поскольку List<string> не является string

0 голосов
/ 12 марта 2020

Не совсем понятно, что ты здесь пытаешься сделать. Похоже, что OffReportColumns - это список строк, и вы пытаетесь добавить список строк к определенному его индексу.

Если вы сделаете это

model.OffReportColumns.AddRange(new List<String>(){
    s.Name,
    "string test",
    "etc."
})

Вы добавите все элементы вашего нового списка строк до конца OffReportColumns.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...