C# 返回多个表的LINQ查询

C# 返回多个表的LINQ查询,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我有以下代码: MyDataContext dc = new MyDataContext(); IQueryable<Table1> q1 = from n in dc.Table1 select n 这将返回一种类型的IQueryable。我现在要做的是提取表1和表2。例如(这显然不起作用): IQueryable q1=qry.Table1 IQueryable q2=qry.表2 有办法做到这一点吗?当然有: IQueryable<Tab

我有以下代码:

MyDataContext dc = new MyDataContext();

IQueryable<Table1> q1 =
       from n in dc.Table1
       select n
这将返回一种类型的
IQueryable
。我现在要做的是提取表1和表2。例如(这显然不起作用):

IQueryable q1=qry.Table1
IQueryable q2=qry.表2
有办法做到这一点吗?

当然有:

IQueryable<Table1> q1 = qry.Select(a => a.n);
IQueryable<Table2> q2 = qry.Select(a => a.r);
IQueryable q1=qry.Select(a=>a.n);
IQueryable q2=qry.Select(a=>a.r);

你想这样做吗

IQueryable<Table1> q1 = qry.Select(x => x.n);
IQueryable<Table2> q2 = qry.Select(x => x.r);
IQueryable q1=qry.Select(x=>x.n);
IQueryable q2=qry.Select(x=>x.r);

您可以定义表的外键(在相应的
字段上),并将它们的关联添加到模型类别中(理想情况下通过LINQ to SQL设计器)

然后你可以做:

IQueryable<Table1> items1 = dc.Table1;

foreach (var item1 in items1)
{
    var items2 = item1.Table2s; // naming might differ
}
IQueryable items1=dc.Table1;
foreach(项目1中的变量项目1)
{
var items2=item1.Table2s;//命名可能不同
}
这样做的缺点是,即使使用
DataLoadOption
s,L2S也会使这项操作非常昂贵。查询Table1结果集中每一行的Table2

IQueryable<Table1> q1 = qry.Select(x => x.n);
IQueryable<Table2> q2 = qry.Select(x => x.r);
IQueryable<Table1> items1 = dc.Table1;

foreach (var item1 in items1)
{
    var items2 = item1.Table2s; // naming might differ
}