Подтвердить что ты не робот

Добавить элементы в список из linq var

У меня есть следующий запрос:

    public class CheckItems
    {
        public String Description { get; set; }
        public String ActualDate { get; set; }
        public String TargetDate { get; set; }
        public String Value { get; set; }
    }



   List<CheckItems>  vendlist = new List<CheckItems>();

   var vnlist = (from up in spcall
               where up.Caption == "Contacted"
                      select new CheckItems
                      {
                          Description = up.Caption,
                          TargetDate = string.Format("{0:MM/dd/yyyy}", up.TargetDate),
                          ActualDate = string.Format("{0:MM/dd/yyyy}", up.ActualDate),
                          Value = up.Value
                      }).ToList();

//Затем, когда я пытаюсь добавить vnlist в список поставщиков, я получаю сообщение об ошибке, поскольку я не могу добавить это в список, который я получаю, и ошибку, говорящую, что у меня есть некоторые недопустимые аргументы

         vendlist.Add(vnlist);
4b9b3361

Ответ 1

Если вам нужно добавить какую-либо коллекцию элементов IEnumerable в список, вы должны использовать AddRange.

vendlist.AddRange(vnlist);

Ответ 2

Или объедините их...

vendlist.AddRange((from up in spcall
               where up.Caption == "Contacted"
                      select new CheckItems
                      {
                          Description = up.Caption,
                          TargetDate = string.Format("{0:MM/dd/yyyy}", up.TargetDate),
                          ActualDate = string.Format("{0:MM/dd/yyyy}", up.ActualDate),
                          Value = up.Value
                      }).ToList());

Ответ 3

Я думаю, вы пытаетесь добавить полный список вместо одного экземпляра CheckItems. У меня нет компилятора С# здесь, но, возможно, AddRange вместо Add works:

vendlist.AddRange(vnlist);

Ответ 4

Вот простой способ сделать это:

List<CheckItems>  vendlist = new List<CheckItems>();

var vnlist =    from up in spcall
                where up.Caption == "Contacted"
                select new
                  {
                      up.Caption,
                      up.TargetDate,
                      up.ActualDate,
                      up.Value
                  };

foreach (var item in vnlist)
            {
                CheckItems temp = new CheckItems();
                temp.Description = item.Caption;
                temp.TargetDate = string.Format("{0:MM/dd/yyyy}", item.TargetDate);
                temp.ActualDate = string.Format("{0:MM/dd/yyyy}", item.ActualDate);
                temp.Value = item.Value;

                vendlist.Add(temp);
            }