我目前正在使用LinqToSQL开发ASP.NET 4.5应用程序。我使用asp:GridView
控件。在我的数据源查询方法中,我需要从SQL Server的2个表中查询几乎相同字段的所有数据。
我的数据库第一课:
private partial class AdOld
{
private int PK;
private string Text;
}
我的数据库第二课:
private partial class AdNew
{
private int PK;
private string Text;
private bool IsActive;
}
LinqDataSource1_Selecting
的{{1}}方法如下所示:
GridView
你知道如何(从2个表中选择*)在1个linq查询中查询多个表吗?除了表AdNew中的IsActive,我需要两个表的所有条目。
非常感谢!!
答案 0 :(得分:1)
试试这样的事情;
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; }
}
答案 1 :(得分:1)
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);
答案 2 :(得分:1)
我会创建一个名为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);