2011-03-08 63 views

回答

1

該庫用於創建動態linq,所以我不希望它支持你提到的sql-operators。看看代碼,它似乎支持System.Linq.Enumerable中的一部分方法。

var code = File.ReadAllText("dynamic.cs"); 
var strings = Regex.Matches(code, "\"(\\w*)\"").Cast<Match>() 
    .Select(m => m.Groups[1].Value); 
var methods = typeof(System.Linq.Enumerable).GetMethods(BindingFlags.Public 
    | BindingFlags.Static).Select(mi => mi.Name); 

string.Join(", ", strings.Intersect(methods)).Dump(); 

給出:其中,選擇,排序依據,OrderByDescending,ThenBy,ThenByDescending,拿,跳過的GroupBy,任何,計數,最小值,最大值,Concat的

更新:我現在發現文檔,LinqSamples \ DynamicQuery \ Dynamic expression.html,在下載中。我想你會在操作員部分找到你要找的東西。 (以上可以在IQueryable擴展方法部分中確認)。

+0

但我可以使用=,!=等運營商。那麼,我怎麼知道有多少這樣的運營商? – ArpanDesai 2011-03-08 12:24:12

+0

@ArpanDesai,我更新了答案。 – Grastveit 2011-03-09 11:54:08

0

System.Linq.Dynamic庫查看像==> <> =等運算符。它也可以執行給定屬性具有的任何函數進入。

這裏的System.Linq.Dynamic例如,對於「喜歡」

myQueryable.Where( 
    "customer.name.StartsWith(@0) AND customer.lastName.EndsWith(@1)","B","E"); 

這相當於:

"select .... from .... WHERE customer.name LIKE 'B%' AND customer.name LIKE '%E'" 

庫可以調用System.String在這個例子中具有訪問權限的任何功能。在一個側面節點上,它已經使用關鍵字「IN」,如果你想說「不喜歡」,只是說「!customer.name.StartsWith(...)」