【问题标题】:LINQ joins and ADO.NET Data ServicesLINQ 连接和 ADO.NET 数据服务
【发布时间】:2009-02-14 18:42:00
【问题描述】:

我有一个 Windows 服务,它通过 ADO.NET 数据服务公开三个数据源。这些数据源是加载到 XDocument 中然后通过 .AsQueryable() 公开的只读 XML 文件;源包含具有整数 ID 的字段,可以将其视为数据源之间的“外键”。

我的客户使用此数据服务,并且可以使用 LINQ 分别查询三个数据源。有使用数据的数据绑定控件。

在客户端,我想在这三个数据源之间进行 SQL 样式的连接。我最初使用 LINQ 连接来执行此操作,但发现 ADO.NET 数据服务不支持此操作。

我的第二种方法是将数据获取为单独的表,然后执行连接客户端 - 尽管这不是最佳的。但是,由于 LINQ 会延迟获取数据并在枚举数据时构造查询,这最终会导致与第一种方法相同的问题。

所以,我现在认为最好的方法是在服务器端加入我的所有数据,并使用提供 IQueryable 接口的新对象公开它。

这真的是最好的方法吗?看起来……不整洁。

【问题讨论】:

  • 除非您对工作感到无聊,否则我会继续前进。如果你只担心不整洁,而且不重要,那么以后再担心。

标签: c# .net linq join wcf-data-services


【解决方案1】:

您可以使用第二种方法并使用 ToList() 强制提前加载,然后使用 LINQ to Objects 对 2 个列表进行连接。

几乎不是最优的,您会失去可组合性,但它应该可以解决延迟加载问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多