Как преобразовать набор данных в объект строго типа? - PullRequest
2 голосов
/ 31 июля 2009

Я получаю некоторую информацию в наборе данных, и я хотел бы привести ее к объекту строго типа. Например, мой набор данных имеет:

TableName: tab_data
Ряды: 1
Столбцы: Имя, Имя, Адрес

Итак, я создал класс как:

public class Customer
{
public String Name;
public String FirstName;
public String Address;
}

Есть ли магический трюк, чтобы просто привести мой набор данных к типу Customer? Использовать LiNQ?

Спасибо

Ответы [ 3 ]

4 голосов
/ 31 июля 2009

Есть ли причина, по которой вы не создали строго типизированный DataSet для начала? Это, вероятно, было бы самым простым решением.

Вы, безусловно, можете преобразовать каждый DataTable в (скажем) List<Customer>, используя расширение AsEnumerable в DataTable и проекцию, которая создает Customer из DataRow, если вам действительно нужно.

2 голосов
/ 31 июля 2009

Вы не можете привести к этому, но вы можете перевести данные ...

Ответ, вероятно, отличается для 1 таблицы, чем для 20; в отдельных случаях вы просто должны иметь возможность Select выводить данные (или, альтернативно, просто повторять ) - это будет самый быстрый вариант, но он требует много обслуживания, если у вас много таблиц. В последнем случае, какое-то отражение, , возможно, так .

0 голосов
/ 29 сентября 2014

Вот пример того, как вы можете преобразовать набор данных в строго типизированный объект. В некоторых ситуациях мы помещаем данные в набор данных через какой-то другой источник, который может не быть строго типизирован. Но набор данных позволяет нам преобразовывать данные в строго типизированный объект.

 List<Customer> CustomerList =  
                      (from row in ds.Tables[0].AsEnumerable()
                       select new Customer
                       {
                        Name = row.Field<string>("Name"),
                        FirstName = row.Field<string>("FirstName"),
                        Address = row.Field<string>("Address")
                       }).ToList();
...