假设我有2个表table1和table2,共享密钥为“id”
如果我想使用sql对这两个表进行内部连接,我会做类似
的事情select id, x, y, z
from table1
inner join table2
on table1.id = table2.id
我现在在表1中获得只在表2中出现的行。
如何获得wcf数据服务/ odata linq语法中的等价物?
我期待的是:
var q = (from t in svc.Table1.Expand("Table2")
where t.Table2.Any()
select t) as DataServiceQuery<Table1>;
但这让我对Any()
有了例外
我已经尝试了.Join
,但也不支持。
我已经尝试了.Count
,但也失败了
.Intersect
看起来只需要另一个可枚举,所以看起来不像我想要的......
我想我错过了一些非常明显或简单的东西......
的重复答案 0 :(得分:2)
看看这类question的答案。即使您的基础数据合同确实存在,当前版本的WCF数据服务(OData)也不支持连接(例如,如果您在实体框架4之上进行分层)。
答案 1 :(得分:1)
目前,OData协议(以及WCF数据服务)不支持任何/所有操作。它也不支持任意连接,尽管某些连接可以表示为导航。 您的查询目前不受支持,但我们正在考虑添加对any / all操作的支持。如果能够满足您的需求,请查看此提案: http://www.odata.org/blog/support-for-any-and-all
答案 2 :(得分:1)
最新版本的WCF数据服务现在包括Any / All支持。见What's New in WCF Data Services 5.0
答案 3 :(得分:0)
WCF在这里发挥吗?要链接两个表/列表中的两个对象,我会这样做:
var result =
from o1 in Table1
join o2 in Table2 on o2.id equals o1.id