Я получаю некоторую информацию в наборе данных, и я хотел бы использовать его в объекте строгого типа. Например, у моего набора данных есть:
TableName: tab_data
Строки: 1
Столбцы: имя, имя, адрес
Итак, я создал класс вроде:
public class Customer
{
public String Name;
public String FirstName;
public String Address;
}
Есть ли какой-нибудь волшебный трюк, чтобы просто наложить мой набор данных на тип клиента? Использовать LiNQ?
Спасибо,
Вы не можете это сделать, но вы можете перевести данные...
Ответ, вероятно, отличается для 1 таблицы, чем для 20; на отдельных основаниях вы должны просто Select
вывести данные (или, альтернативно, просто итерации) - это будет самый быстрый вариант, но это много если у вас много таблиц. В последнем случае возможно какое-то отражение возможно, так.
Есть ли причина, по которой вы не создали сильно типизированный DataSet для начала? Это, вероятно, было бы самым простым решением.
Вы можете преобразовать каждый DataTable в (скажем) a List<Customer>
с помощью расширения AsEnumerable
на DataTable
и проекции, которая создает Customer
из DataRow
, если вам действительно нужно.
Вот пример того, как вы можете преобразовать набор данных в сильно типизированный объект. Есть некоторые ситуации, когда мы получаем данные в набор данных через какой-то другой источник, который не может быть строго типизирован. Но Dataset позволяет нам преобразовывать данные в строго типизированный объект.
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();