OData - 将参数实体设置为LINQ

时间:2013-08-07 06:55:15

标签: linq odata

我有一个可以正常工作的OData URI,传递一个名为gridsize的参数值并从Results中检索数据。这是URI,它工作正常:

http://<webservice>/MULTI_POINT_PARAMParameters(gridsize=0.1m)/Results

我正在尝试使用LINQ使上述URI工作。我正在使用MVC服务引用来生成代理类。所以我尝试了这个LINQ:

var query = (from x in context.MULTI_POINT_PARAMParameters
                where
                x.gridsize == 0.1M
                select x);

然而,上面的LINQ生成了这个URI,它无法说“找不到segement”:

http://<webservice>/MULTI_POINT_PARAMParameters()?$filter=gridsize eq 0.1M}

我真正想要LINQ生成的是这个,我知道有效:

http://<webservice>/MULTI_POINT_PARAMParameters(gridsize=0.1m)/Results

如何让LINQ生成我想要的URI?我看过Linq2rest,但是如果我想自己明确地编写LINQ术语,而不是让Linq2rest生成我看不到的“隐藏”术语,那么就无法看到它如何帮助我。

1 个答案:

答案 0 :(得分:0)

据我所知,如果你想在OData中添加过滤器,你必须使用“$ filter”。

如果你想使用“MULTI_POINT_PARAMParameters(gridsize = 0.1m)”那么你可能不得不使用动态生成LINQ。

动态生成后,您的查询可能看起来像这样

var query = (from x in context.MULTI_POINT_PARAMParameters(gridsize=0.1m)                
            select x);

我只是想给你一个思考的方向。让我们看看别人对你的问题有什么看法。