2011-04-13 42 views
5

我創建了一個WCF服務,其結果不是嚴格的OData提要(出於複雜的原因,業務策略等)。另外,URL的格式與OData略有不同,但其大部分功能非常相似。將OData Uri轉換爲等效的Linq表達式

我如何轉換Linq表達式樹中的URI?

在此先感謝。

回答

2

目前這個功能並沒有公開。並且自己編寫它相當複雜(取決於您需要支持哪種類型的查詢以及您的模型)。 是否真的有必要偏離OData協議?也許你需要做的事可以通過其他方式來實現。

+0

謝謝您的回答。這是必要的,因爲業務策略更改關鍵字並且返回的Feed稍有不同(例如:自定義擴展中的條目有效內容)。 – Merrin 2011-04-19 11:23:58

+0

我必須將接收到的Uri轉換爲Linq查詢。如果它是OData,沒有問題,因爲WCF數據服務已經完成了所有工作。問題是內部它幾乎像OData,但具有不同的Uri格式。 – Merrin 2011-04-19 11:27:20

+0

我目前正在對Uri進行「解碼」,並通過Dynamic Linq啓動查詢。 – Merrin 2011-04-19 11:30:20

0

您可以使用下面的NuGet包:https://www.nuget.org/packages/Community.OData.Linq

它允許使用OData的文本查詢參數LINQ expresson任何IQuerable沒有ASP.NET依賴

var result = query.OData().Filter("Id eq 1 or Name eq 'n3'").OrderBy("Name desc").ToArray();