我使用System.Linq.Dynamic
库在IQueryable
集合上生成动态where条件。任何人都可以列出此库支持的操作列表吗?我只知道=和包含。我可以使用“IN
,Like
,Not Like
等......”?
答案 0 :(得分: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();
Give:Where,Select,OrderBy,OrderByDescending,ThenBy,ThenByDescending,Take,Skip,GroupBy,Any,Count,Min,Max,Concat
更新:我现在在下载中找到了文档,LinqSamples \ DynamicQuery \ Dynamic expression.html。我想你会在运营商部分找到你想要的东西。 (以上内容可以在IQueryable Extension Methods部分确认。)
答案 1 :(得分:0)
System.Linq.Dynamic库查看类似==&gt;的运算符。 &LT; &gt; =等。它还可以执行给定属性可以访问的任何函数。
这是“LIKE”的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”,如果你想说“NOT LIKE”,只需说“!customer.name.StartsWith(...)”