簡體   English   中英

asp.net LinqDataSource使用聯接查詢多個表

[英]asp.net LinqDataSource query multiple tables with join

我目前正在使用LinqToSQL開發ASP.NET 4.5應用程序。 我使用一個asp:GridView控件。 在我的數據源查詢方法中,我需要從SQL Server的2個表中使用幾乎相同的字段查詢所有數據。

我的DB類:

private partial class AdOld 
{
   private int PK;
   private string Text; 
}

我的數據庫類二:

private partial class AdNew 
{
   private int PK;
   private string Text;
   private bool IsActive;
}

我的GridView LinqDataSource1_Selecting方法如下所示:

protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
   var ctx = new MyContext();

   var result = new MyContext().AdOld;
   // I would need to add a query to select something like MyContext().AdOld.AdNew into a Model of AdOld

   e.Result = result;
}

您是否知道如何(從2個表中選擇*)在1個linq查詢中查詢多個表? 除了表格AdNew中的IsActive之外,我還需要兩個表格的所有條目。

非常感謝!!

嘗試這樣的事情;

var query = from ao in AdOld
            from an in AdNew 
            select new
            {
                ao,
                an
            };

您也可以使用Union ;

var adOld = ctx.AdOld.Select(ao => new Ad { Pk = ao.PK, Text = ao.Text }).ToList();
var adNew = ctx.AdNew.Where(an => an.IsActive).Select(an => new Ad { Pk = an.PK, Text = an.Text }).ToList();
var result = adOld.Union(adNew).ToList();

public class Ad
{
    public int Pk { get; set; }

    public string Text { get; set; }
}

你想做一個聯盟嗎? 試試這個

var ao = ctx.AdOld.Select(x => new { x.PK, x.Text})
var an = ctx.AdNew.Select(x => new { x.PK, x.Text})
var query = ao.Union(ae);

我將創建一個名為OldAndNew之類的新類,並在該類的列表中選擇2個查詢。 這樣,您的新類可以為新數據集提供一些唯一的標識符,因為可能有重復的PK。

    public class OldAndNew
    {
      public int NewPK;
      public int OriginalPK;
      public string Text;
    }

接着:

int number = 0;
var listOfBoth = new List<OldAndNew>();
            var x = AdOld.Select(y => new OldAndNew()
            {
                NewPK = number++,
                OriginalPK = y.PK,
                Text = y.Text
            });
            var y = AdNew.Select(y => new OldAndNew()
            {
                NewPK = number++,
                OriginalPK = y.PK,
                Text = y.Text
            });
listOfBoth.Add(x);
listOfBoth.Add(y);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM