Как упомянуто в вопросе, IEnumerable
имеет CopyToDataTable
метод:
IEnumerable<DataRow> query =
from order in orders.AsEnumerable()
where order.Field<DateTime>("OrderDate") > new DateTime(2001, 8, 1)
select order;
// Create a table from the query.
DataTable boundTable = query.CopyToDataTable<DataRow>();
, Почему это не будет работать на Вас?
Создайте объект класса и возвратитесь list(T)
из запроса.
Сделайте ряд Объектов Передачи данных, нескольких картопостроителей и возврата это через .asmx.
Вы должны никогда , выставляют объекты базы данных непосредственно, поскольку изменение в схеме процедуры распространит потребителю веб-сервиса без Вас замечающий его.
При использовании типа возврата IEnumerable
можно возвратить Ваш запрос переменная непосредственно.
Для выполнения этого запроса против DataContext
класс необходимо будет сделать следующее:
MyDataContext db = new MyDataContext();
IEnumerable<DataRow> query =
(from order in db.Orders.AsEnumerable()
select new
{
order.Property,
order.Property2
})
as IEnumerable<DataRow>;
return query.CopyToDataTable<DataRow>();
Без as IEnumerable<DataRow>;
Вы будете видеть следующую ошибку компиляции:
не Может неявно преобразовать тип 'Система. Наборы. Универсальный. IEnumerable' к 'Системе. Наборы. Универсальный. IEnumerable'. Явное преобразование существует (Вы скучаете по броску?)