1. Welcome Guest! In order to create a new topic or reply to an existing one, you must register first. It is easy and free. Click here to sign up now!.
    Dismiss Notice

DataSet From linq

Discussion in 'Microsoft News' started by NewsBot, Apr 26, 2008.

  1. NewsBot

    NewsBot I Got News

    Joined:
    Feb 8, 2006
    Messages:
    1,813
    Operating System:
    Windows Vista Home Premium
    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:

    <!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->public<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->static<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->DataSet<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> LinqDS(<!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->this<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->IQueryable<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> mySource)
    {
    <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->***DataSet<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> ds = <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->new<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->DataSet<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo-->();
    <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->***using<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> (<!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->SqlConnection<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> connection = <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->new<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->SqlConnection<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo-->(_connectionString))
    ***{
    <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->******using<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo-->(<!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->SqlCommand<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> command = <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->new<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->SqlCommand<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo-->(mySource.ToString()))
    ******{
    *********command.CommandType = <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->CommandType<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo-->.Text;
    *********command.Connection = connection;
    *********connection.Open();
    <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->*********SqlDataAdapter<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> da = <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->new<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->SqlDataAdapter<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo-->(command);
    *********da.Fill(ds);
    *********connection.Close();
    ******}
    <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->******return<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><font size=2> ds;
    ***}
    }

    Call it by something like:<!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->var<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> o = <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->from<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo-->*d <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->in<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> DB.MyTable
    <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->******select<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> d;
    <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af <!--/coloro-->
    DataSet<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> ds = o.LinqDS();<!--sizec--><!--/sizec-->

    But if the Linq contains a where, this extension method won't work because of the way that Linq generates the sql query.

    <!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->var<!--colorc--><!--/colorc--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> o = <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->from<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo-->*d <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->in<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> DB.MyTable
    ***where d.Column1 > 0
    <!--sizec--><!--/sizec--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->******select<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><font size=2> d;

    Would generate SQL like:

    <!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->SELECT<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> [t0].[Column1], [t0].[Column2]
    <!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->FROM<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> [MyDB].[dbo].[MyTable] <!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->AS<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> [t0]
    <!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--coloro:#0000ff--><span style="color:#0000ff <!--/coloro-->WHERE<!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--colorc--><!--/colorc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--><!--fonto:Courier New--> Courier New <!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100% <!--/sizeo--> [t0].[Column1] <!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><!--sizec--><!--/sizec--><!--fontc--><!--/fontc--><font color="#808080" size=2 face="Courier New <font color="#808080" size=2 face="Courier New <font color="#808080" size=2 face="Courier New
     

Share This Page