首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在dotnet核中生成OData过滤器字符串

如何在dotnet核中生成OData过滤器字符串
EN

Stack Overflow用户
提问于 2020-12-29 11:13:14
回答 1查看 468关注 0票数 0

我可以找到数百个如何构建OData API的示例,但我正在使用OData API。

目前我们正在做一些可怕的事情,比如;

代码语言:javascript
复制
string filter = "FirstName eq '" + firstName + "' " +
"LastName eq '" + lastName + "'";

但我假设有一个图书馆,我可以使用和做类似的事情;

代码语言:javascript
复制
SomeType query = new SomeType();
query.AddFitler("FirstName", Comparison.Equals, firstName);
query.AddFilter("LastName", Comparison.Equals, lastName);
string filter = query.ToString();

你能帮我指出正确的方向吗-谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 16:03:18

我想我在搜索Strong-typed Linq to construct OData query options半天之后找到了解决方案

代码语言:javascript
复制
// url doesn't matter unless you will use data service to execute the call
var dsContext = new DataServiceContext(new Uri("http://stackoverflow"));
// need to pass in the controller into CreateQuery - could create an extension method to pluralize the type to not have to pass it in. 
var query = dsContext.CreateQuery<Product>("/api/products").Where(p => p.Category == "Cars");
// ToString will output the url
var uri = new Uri(query.ToString());
// Grab just the path and query
var path = new Uri(uri.PathAndQuery, UriKind.RelativeOrAbsolute);
await client.GetAsync(path); // this will call the api not DataServiceContext

现在只是测试!

编辑这个效果很好--我最后创建了一个小包装器来擦干它;

代码语言:javascript
复制
public class SearchQueryBuilderService<T>
{
    private DataServiceContext _context = new DataServiceContext(new Uri("https://tickett.net"));

    public string Build(Expression<Func<T, bool>> predicate)
    {
        return _context.CreateQuery<T>("tel").Where(predicate).ToString().Replace("https://tickett.net/tel?$filter=", "");
    }
}

因此,我现在可以从各种"Api存储库“中将其称为”Api存储库“;

代码语言:javascript
复制
string searchString = new SearchQueryBuilderService<SomePoco>().Build(sp => sp.SomeProp == "SomeValue");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65491222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档