【发布时间】:2010-05-05 17:39:56
【问题描述】:
我正在寻找与 WCF 数据服务兼容的受支持 linq 扩展方法的完整列表。
通过反复试验,我发现不支持 First(Func) 和 Single(Func),还有其他的吗?
This 让我对支持的内容有了一个很好的了解,我只是不知道通过 IQueryProvider 实际翻译了什么。
【问题讨论】:
-
链接转到“此主题不再可用”
我正在寻找与 WCF 数据服务兼容的受支持 linq 扩展方法的完整列表。
通过反复试验,我发现不支持 First(Func) 和 Single(Func),还有其他的吗?
This 让我对支持的内容有了一个很好的了解,我只是不知道通过 IQueryProvider 实际翻译了什么。
【问题讨论】:
我发现一个网站列出了不受支持的 linq 方法
http://msdn.microsoft.com/en-us/library/ee622463.aspx#unsupportedMethods
【讨论】:
Silverlight 不支持 First 和 Single,因为 Silverlight 要求所有网络都异步完成,但您可以使用类似这样的代码来模拟它
NorthwindEntities context = new NorthwindEntities(new Uri("Northwind.svc", UriKind.Relative));
DataServiceQuery<Order> q = (DataServiceQuery<Order>)context.Orders.Take(1);
q.BeginExecute((IAsyncResult ar) =>
{
var o = ((DataServiceQuery<Order>)q).EndExecute(ar).First();
txtOutput.Text = o.OrderID.ToString();
}, null);
在此代码中,您只请求使用 Take(1) 通过网络发送一个,然后一旦它已经在客户端上,使用 First() 或 Single() 即可轻松获取单例引用。
据我所知,没有可用的受支持 Linq 运算符的明确列表。
-杰夫
【讨论】:
您的发现确实很有趣 - 特别是如果您查看 MSDN 文档 Querying the Data Service (WCF Data Services)。
在第一段中,文档声明:
查询在以下场景中执行:
再往下几行,有一个黄色的“注”框说明:
注意
在 LINQ 语法比那些更广泛 在具象状态下启用 基于传输 (REST) 的 URI 语法 由数据服务使用。一种 NotSupportedException 引发时 查询不能映射到 URI 目标数据服务。
不幸的是,我找不到 WCF 数据服务支持或不支持 LINQ 语法中哪些运算符的任何明确列表 - 文档中明显缺乏!
【讨论】: