Как преобразовать DataView, DataRowView в общие типизированные списки

#c# #asp.net #class #list #generics

#c# #asp.net #класс #Список #общие

Вопрос:

Есть ли какой-либо возможный метод, кроме цикла, перечисления ICollection, чтобы преобразовать их соответственно в типизированный список, зная столбцы в ICollection. Я использую .net Framework 2.0, C # 2.0. Ожидаемый ответ был бы чем-то вроде этого, однострочный

List<Bills> bills = GetBills(DataView/DataRowView/ICollection);

где Bills тип будет иметь BillNumber, BillDate, BilledTo свойства as. DataRowView / DataView будет иметь соответствующие столбцы с записями в них. Существует ли метод заводской сборки, который выполняет эту работу? Если нет какой-либо одной строки для этого?

Ответ №1:

Не могли бы вы сделать это в одной строке, используя LINQ Select с лямбдой? Что-то в этом роде….

 List<Bills> bills = yourDataView.Rows.Select(t => new Bills() {BillNumber = t["BillNumber"], BillDate = t["BillDate"], BilledTo = t["BilledTo"]}).ToList();
  

Комментарии:

1. Не будет работать, поскольку он на платформе 2.0, поэтому, к сожалению, нет Linq.

2. Бах. не видел этого фрагмента. Было бы более простым решением.

3. NET 2.0, так что приветствую Linq. черт, если бы у меня был 3.5, я был бы намного счастливее

Ответ №2:

Используйте Linq Select для преобразования строк DataView в список объектов:

 DataView yourDataView;

List<Bills> bills = yourDataView.ToTable().Rows.Cast<DataRow>()
                    .Select(r => new Bills() 
                    { 
                        BillNumber = r.Field<int>("BillNumber"), 
                        BillDate = r.Field<DateTime>("BillDate"), 
                        BilledTo = r["BilledTo"].ToString()                 
                    }).ToList();