How to convert DataView,DataRowView to Generic Typ

2019-07-30 06:45发布

问题:

Is there any possible method than looping, Enumerating the ICollection to convert them respectively to Typed List knowing the columns in the ICollection. I am using .net Framework 2.0, C#2.0. Expected answer would be something like this,a one liner

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

where Bills type would have BillNumber, BillDate, BilledTo as properties. The DataRowView/DataView would have corresponding Columns with records in them. Is there a factory build method that does the Job? If No any one liner to do it?

回答1:

Could you do it in one line using a LINQ Select with a lambda? Something along these lines....

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


回答2:

Use Linq Select to convert the DataView rows to a List of objects:

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