#c# #entity-framework #list #reflection #collections
#c# #entity-framework #Список #отражение #Коллекции
Вопрос:
Я пытаюсь вставить некоторые записи в базу данных с помощью Entity Framework. С чем я борюсь, так это с доступом к свойствам внутренних списков.
Внутренние списки имеют следующую структуру:
public class Innerlist
{
public string item1 { get; set; }
public List<string> item2 { get; set; }
public List<object> item3 { get; set; }
public int item4 {get; set;}
etc...
}
Приведенный выше список затем оборачивается другим списком. Мой вопрос в том, как мне получить доступ к свойствам Item1, Item2 и Item3?
Мой циклический код имеет следующую структуру:
using(var context = new fooContext())
{
foreach (var innerList in Outerlist)
{
try
{
context.fooEntity.Add(innerList);
}
catch (Exception ex)
{
Console.WriteLine("nn" ex);
Console.ReadLine();
}
}
}
Я попытался использовать цикл foreach, который перебирал внешний список, а затем другой цикл для перебора внутреннего списка. Однако это привело к ошибке о классе, не содержащем общедоступное определение ‘GetEnumerator’.
Внутренний цикл foreach структурирован следующим образом:
foreach (var innerList in outerList)
{
foreach(var item in innerList)
{
try
{
context.fooEntity.Add(item);
}
catch (Exception ex)
{
Console.WriteLine("nn" ex);
Console.ReadLine();
}
}
}
Теперь я получаю ошибки: «Наилучшее перегруженное соответствие имеет некоторые недопустимые аргументы». И «Не удается преобразовать из object в класс InnerList».
Редактировать
Я должен добавить, что это преобразуется в список с помощью JSON.net который принимает строку JSON и преобразует ее в список с помощью класса innerList, который существует как класс модели Entity Framework.
Любая помощь была бы отличной. Приветствия.
Комментарии:
1. Опубликуйте свой зацикленный фрагмент кода, чтобы мы могли увидеть, что вы сделали неправильно и как это исправить..
2. @har07 Я обновил свой вопрос.
3. Я имел в виду внутренний цикл, тот, который сгенерировал ошибку (ваш внешний цикл работает нормально, не так ли?)… Как насчет простого
foreach(var item in innerList.item2){}
, нет?4. @har07 Спасибо за вашу помощь. Я снова обновил его.
5. Вопрос мне не очень понятен. Какова ваша цель здесь? Если вы хотите добавить
InnerList
класс в datacontext, то я думаю, вам не нужен внутренний цикл. Если вы хотите получить доступ к свойствамInnerList
для любых других целей, вы можете сделать, как я предлагаю в моем предыдущем комментарии (показал пример того, как получить доступ кitem2
свойству и выполнить цикл по его элементу списка)
Ответ №1:
Ваш класс Innerlist не является списком. Это класс, который содержит список. Создайте свой объект Innerlist, реализующий IEnumerable