2009-02-14 75 views
1

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

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

在客户端,我想在这三个数据源之间进行SQL风格的连接。我原本是通过LINQ加入的,但发现ADO.NET Data Services不支持这一点。

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

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

这真的是最好的方法吗?看起来...... un。。

+0

除非你对工作感到无聊,否则我会继续前进。如果不整洁就是你所担心的,并且不重要,那么以后再担心。 – leppie 2009-02-14 19:13:31

回答

2

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

几乎不是最佳的,你会失去可组合性,但它会让你围绕懒惰的加载问题。

+0

那会做。谢谢。 – 2009-02-14 23:13:20