Question: How do you expose a LINQ query as an ASMX web service? Usually, from the business tier, I can return a typed
How can I do the same for a LINQ query? Is there a way to populate a typed
Solution:
As mentioned in the question,
Note: To everyone wondering why CopyToDataTable() doesn't work on their machine: This function is not part of .NET 3.5 SP1 nor will it be of .NET 4.0 and onwards.
DataSet
or DataTable
which can be serialized for transport over ASMX.public static MyDataTable CallMySproc() { string conn = "..."; MyDatabaseDataContext db = new MyDatabaseDataContext(conn); MyDataTable dt = new MyDataTable(); // execute a sproc via LINQ var query = from dr in db.MySproc().AsEnumerable select dr; // copy LINQ query resultset into a DataTable -this does not work ! dt = query.CopyToDataTable(); return dt; }
DataSet
or DataTable
via a LINQ query?Solution:
As mentioned in the question,
IEnumerable
has a CopyToDataTable
method: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>();
Note: To everyone wondering why CopyToDataTable() doesn't work on their machine: This function is not part of .NET 3.5 SP1 nor will it be of .NET 4.0 and onwards.
No comments:
Post a Comment