#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();