NewsBot
1
So I have some Linq code that returns some IQueryable.
Now I want to take the query and return a DS (for some legacy systems that I dont have time to rewrite at the moment, but would still like to leverage the a common Linq framework).
If the Linq is very basic, it is trivial to get a DataSet back, just use an extension method like:
publicstaticDataSet LinqDS(thisIQueryable mySource)
{
***DataSet ds = newDataSet();
***using (SqlConnection connection = newSqlConnection(_connectionString))
***{
******using(SqlCommand command = newSqlCommand(mySource.ToString()))
******{
*********command.CommandType = CommandType.Text;
*********command.Connection = connection;
*********connection.Open();
*********SqlDataAdapter da = newSqlDataAdapter(command);
*********da.Fill(ds);
*********connection.Close();
******}
******return<font size=2> ds;
***}
}
Call it by something like:var o = from*d in DB.MyTable
******select d;
DataSet ds = o.LinqDS();
But if the Linq contains a where, this extension method won't work because of the way that Linq generates the sql query.
var o = from*d in DB.MyTable
***where d.Column1 > 0
******select<font size=2> d;
Would generate SQL like:
SELECT [t0].[Column1], [t0].[Column2]
FROM [MyDB].[dbo].[MyTable] AS [t0]
WHERE [t0].[Column1] <font color="#808080" size=2 face="Courier New"><font color="#808080" size=2 face="Courier New"><font color="#808080" size=2 face="Courier New">
Now I want to take the query and return a DS (for some legacy systems that I dont have time to rewrite at the moment, but would still like to leverage the a common Linq framework).
If the Linq is very basic, it is trivial to get a DataSet back, just use an extension method like:
publicstaticDataSet LinqDS(thisIQueryable mySource)
{
***DataSet ds = newDataSet();
***using (SqlConnection connection = newSqlConnection(_connectionString))
***{
******using(SqlCommand command = newSqlCommand(mySource.ToString()))
******{
*********command.CommandType = CommandType.Text;
*********command.Connection = connection;
*********connection.Open();
*********SqlDataAdapter da = newSqlDataAdapter(command);
*********da.Fill(ds);
*********connection.Close();
******}
******return<font size=2> ds;
***}
}
Call it by something like:var o = from*d in DB.MyTable
******select d;
DataSet ds = o.LinqDS();
But if the Linq contains a where, this extension method won't work because of the way that Linq generates the sql query.
var o = from*d in DB.MyTable
***where d.Column1 > 0
******select<font size=2> d;
Would generate SQL like:
SELECT [t0].[Column1], [t0].[Column2]
FROM [MyDB].[dbo].[MyTable] AS [t0]
WHERE [t0].[Column1] <font color="#808080" size=2 face="Courier New"><font color="#808080" size=2 face="Courier New"><font color="#808080" size=2 face="Courier New">