【问题标题】:Translate LINQ Statement to usual Data Service URL将 LINQ 语句转换为通常的数据服务 URL
【发布时间】:2012-12-13 21:59:54
【问题描述】:

我想将一个简单的 LINQ 语句翻译成一个 url,我可以在我的网络服务器上使用它来手动生成我的输出。所以我想得到这样的东西

http://localhost:6627/WebSite15/NorthwindDataService.svc/Products?$orderby=ProductName

当执行如下语句时:

Products.Orderby(x => x.ProductName);

这可能吗?我的意思是,一个简单的数据服务开箱即用,但我不想使用这个东西,因为我有特殊要求。

【问题讨论】:

    标签: c# wcf linq url


    【解决方案1】:

    我遇到了一个非常相似的问题,我发现了这个EntitySorter,它工作得非常好......你也可以看到它的类似实现here(查看更高投票的答案,而不是标记的答案)。

    它会让你做这种事情:

    IEntitySorter<Person> sorter = EntitySorter<Person>
        .OrderBy("Address.City")
        .ThenByDescending("Id");
    

    编辑:在旁注中,我有一个完全正当的理由使用它(实际上是在模拟服务层中使用它,所以我不关心性能),但值得注意的是 EntitySorter 有多少“绕过你的 a$$ 以达到你的肘部”以使软搜索起作用......我认为这是微软试图说“我们不是故意让这件事变得简单”......也就是说,我认为 EntitySorter 是考虑到它在做什么,一个非常优雅的解决方案:)

    【讨论】:

    • 嗯。我看不到可以将其转换为上面的 url 的点。
    • EntitySorter 可以让您对字符串进行 lamda 排序...您只需搜索 Request.QueryString 即可获得 OrderBy 值。
    • 我不是这个意思。我的意思只是将上面的命令翻译成一个 url。
    【解决方案2】:

    我现在已经通过 ExpressionVisitor 实现了这一点。像魅力一样工作。

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      • 2011-01-24
      相关资源
      最近更新 更多