Mr *_*ith 6 linq tridion tridion-content-delivery tridion-2011
我正在尝试连接CustomMeta和PageContents通过已设置的某些元数据选择特定页面,但我得到"不支持方法连接"错误.我认为问题出在我的linq语句中,因为错误发生在将任何内容发送到OData服务之前.但到底是什么问题呢?linq声明对我来说很好看:
var pages2 = (from p in cds.PageContents
join m in cds.CustomMetas on p.PageId equals m.ItemId
where m.ItemType==64 && m.KeyName=="SomeKey" && m.StringValue=="SomeValue"
select p).ToList<SDLODataClient.SDLOData.PageContent>();
Run Code Online (Sandbox Code Playgroud)
更新1
这篇Tridion OData文章有一个连接的例子,但我正在阅读的一些MS Linq to OData文章似乎暗示Linq中不支持连接到OData(这里)
据我所知,针对数据服务(OData)的LINQ查询不支持多种方法.您正在使用的join
那个也属于同一类别,因此即使从LINQ的角度来看语法非常有效,您也会看到错误.join
属于"Projection and filtering operators",不支持LINQ对OData的查询.
以下是解释所有不支持的方法的链接(请参阅 - 不支持的LINQ方法部分)
http://msdn.microsoft.com/en-us/library/ee622463(v=vs.100).aspx
回到你的问题,我不太了解你正在寻找什么,但我会尝试以下(你可能必须在多次迭代中获得结果):
_client.CustomMetas.Where (
m => m.KeyName == "somekey" && m.StringValue == "somevalue" && m.ItemType == 64)
.ToList();
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.