Альтернатива Class Object при создании отформатированного списка - PullRequest
0 голосов
/ 24 октября 2018

У меня есть Datatable, который добавляется к List с определенным форматом.Теперь, согласно моему требованию, я не хочу создавать общий список из класса, сохраняя формат моих данных, но не в состоянии это сделать.Ниже мой код

  List<Data> datalist = new List<Data>();
  for (int i = 0; i < dt.Rows.Count; i++)
   {
     Data dd1 = new Data();

     dd1.ID = Convert.ToString(dt.Rows[i]["ID"]);
     dd1.STATUS = Convert.ToString(dt.Rows[i]["Name"]);
     dd1.TYPE = Convert.ToString(dt.Rows[i]["TYPE"]);
     datalist.Add(dd1);
   }

Есть ли способ удалить зависимость класса Data из приведенного выше кода, сохраняя формат в том же виде?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы можете использовать linq запрос к вашему dt, как показано ниже, и проецировать свой результат в anonymous type как.

var datalist = (from r in dt.AsEnumerable()
                select new
                {
                    ID = r.Field<string>("ID"),
                    Name = r.Field<string>("Name"),
                    TYPE = r.Field<string>("TYPE"),
                }).ToList();

Если вы хотите получить name для некоторых Id изdatalist тогда.

string name = datalist.Where(x => x.ID == "123").FirstOrDefault()?.Name;
0 голосов
/ 24 октября 2018

Вы можете использовать словарь на его месте.Нет больше Data зависимости класса, но те же основные данные и формат!

var datalist = new List<IDictionary<string, string>>();
for (var i = 0; i < dt.Rows.Count; ++i)
{
    var data = new Dictionary<string, string>()
    {
        { "ID", Convert.ToString(dt.Rows[i]["ID"]) },
        { "STATUS", Convert.ToString(dt.Rows[i]["Name"]) },
        { "TYPE", Convert.ToString(dt.Rows[i]["TYPE"]) }
    };
    datalist.Add(data);
}

Тогда вы просто получите доступ к значениям datalist[i]["ID"] вместо datalist[i].ID.

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