LINQ 查询返回多个表

发布于 2024-10-28 04:34:50 字数 544 浏览 3 评论 0原文

我有以下代码:

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 类型。我现在想做的是提取Table1和Table2。例如(这显然行不通):

IQueryable<Table1> q1 = qry.Table1
IQueryable<Table2> q2 = qry.Table2

有办法做到这一点吗?

I have the following code:

MyDataContext dc = new MyDataContext();

IQueryable<Table1> q1 =
       from n in dc.Table1
       select n

What I want to be able to do is to join a second table, so:

var qry = 
      from n in dc.Table1
      join r in dc.Table2 on n.Key equals r.Key
      select new { n, r };

This returns me a type of IQueryable<anonymous>. What I now want to do is extract Table1 and Table2. For example (this obviously doesn't work):

IQueryable<Table1> q1 = qry.Table1
IQueryable<Table2> q2 = qry.Table2

Is there a way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

独守阴晴ぅ圆缺 2024-11-04 04:34:50

你想做这样的事情吗?

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

You want to do something like this?

IQueryable<Table1> q1 = qry.Select(x => x.n);
IQueryable<Table2> q2 = qry.Select(x => x.r);
心是晴朗的。 2024-11-04 04:34:50

当然有:

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

Sure there is:

IQueryable<Table1> q1 = qry.Select(a => a.n);
IQueryable<Table2> q2 = qry.Select(a => a.r);
淡看悲欢离合 2024-11-04 04:34:50

您可以为表定义外键(在相应的key字段上),并将它们的关联添加到模型类中(最好通过 LINQ-to-SQL 设计器)。

然后你可以这样做:

IQueryable<Table1> items1 = dc.Table1;

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

这样做的缺点是,即使使用 DataLoadOption,L2S 也会使成本变得非常昂贵。查询 Table2 以获取 Table1 结果集中的每一行。

You can define foreign keys to your tables (on the respective keyfields) and add associations for them to your model clases (ideally via the LINQ-to-SQL designer).

Then you can do:

IQueryable<Table1> items1 = dc.Table1;

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

The drawback with doing it that way, is that, even with DataLoadOptions, L2S will make this very expensive. Querying Table2 for every row in the Table1 result set.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文