我希望LINQ准确生成这个URI:
http://<webservice>/MULTI_POINT_PARAMParameters(xcenter=1M,ycenter=1M)/Results
xcenter
和ycenter
指定我的密钥,Results
是包含我想要的数据的OData服务的导航属性。如果我在浏览器中键入此URI,我会得到我想要的结果。
我几乎得到LINQ来生成这个,但我不能让它在结尾处做/ Results部分。所以,如果我这样做:
var query = context.MULTI_POINT_PARAMParameters
.Where(t => (t.xcenter == 1 && t.ycenter == 1))
.Select(t => t);
我得到这样的URI:
http://<webservice>/MULTI_POINT_PARAMParameters(xcenter=1M,ycenter=1M)
这是一个开始,现在我只需要指定导航参数。我试过这个:
var query2 = context2.MULTI_POINT_PARAMParameters
.Where(t => (t.xcenter == 1 && t.ycenter == 1))
.Select(t => new { t.Results });
但是,它生成的URI如下所示:
http://<webservice>/MULTI_POINT_PARAMParameters(xcenter=1M,ycenter=1M)?$expand=Results&$select=Results
我read上面的URI应该与/Results
相同但是对于我的特定服务我正在处理它不起作用,我需要生成的URI才能准确正如我在开始时用/Results
写的那样。
有谁知道如何让LINQ做到这一点?
答案 0 :(得分:0)
尝试SelectMany
即
var query2 = context2.MULTI_POINT_PARAMParameters
.Where(t => (t.xcenter == 1 && t.ycenter == 1))
.SelectMany(t => t.Results);
对集合导航属性使用SelectMany
,对单个导航属性使用Select
。