Ответ 1
Если вам нужно добавить какую-либо коллекцию элементов IEnumerable в список, вы должны использовать AddRange
.
vendlist.AddRange(vnlist);
У меня есть следующий запрос:
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);
Если вам нужно добавить какую-либо коллекцию элементов IEnumerable в список, вы должны использовать AddRange
.
vendlist.AddRange(vnlist);
Или объедините их...
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());
Я думаю, вы пытаетесь добавить полный список вместо одного экземпляра CheckItems. У меня нет компилятора С# здесь, но, возможно, AddRange вместо Add works:
vendlist.AddRange(vnlist);
Вот простой способ сделать это:
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);
}