我有以下代码:
MyDataContext dc = new MyDataContext();
IQueryable<Table1> q1 =
from n in dc.Table1
select n
我希望能够加入第二个表格,所以:
var qry =
from n in dc.Table1
join r in dc.Table2 on n.Key equals r.Key
select new { n, r };
这会给我一种IQueryable<anonymous>
类型。我现在想要做的是提取Table1和Table2。例如(这显然不起作用):
IQueryable<Table1> q1 = qry.Table1
IQueryable<Table2> q2 = qry.Table2
有办法做到这一点吗?
答案 0 :(得分:4)
你想做这样的事情吗?
IQueryable<Table1> q1 = qry.Select(x => x.n);
IQueryable<Table2> q2 = qry.Select(x => x.r);
答案 1 :(得分:2)
当然有:
IQueryable<Table1> q1 = qry.Select(a => a.n);
IQueryable<Table2> q2 = qry.Select(a => a.r);
答案 2 :(得分:1)
您可以定义表的外键(在相应的key
字段上),并将它们的关联添加到模型分支(理想情况下通过LINQ-to-SQL设计器)。
然后你可以这样做:
IQueryable<Table1> items1 = dc.Table1;
foreach (var item1 in items1)
{
var items2 = item1.Table2s; // naming might differ
}
这样做的缺点是,即使使用DataLoadOption
s,L2S也会使这非常昂贵。查询Table2结果集中的每一行。