有人可以通过提供一个非常基本的例子来解释我如何在C#中使用(1)iQueryable(2)表达式树吗?两者都不相关,而不是提出两个单独的问题,我希望在一个问题中清除我的怀疑。
高级谢谢。
答案 0 :(得分:3)
Expression trees非常简单:
Expression<Func<int,int,int>> addExp = (a,b) => a + b;
或
var paramA = Expression.Parameter(typeof(int), "a");
var paramB = Expression.Parameter(typeof(int), "b");
Expression<Func<int,int,int>> addExp = Expression.Lambda<Func<int,int,int>>(
Expression.Add(paramA, paramB),
paramA,
paramB);
构建IQueryable提供程序相当困难。但是,Matt Warren has a very indepth series that walks you through creating an IQueryable provider.
答案 1 :(得分:2)
我一般不喜欢只是链接东西,但这是一个更复杂的话题。我建议观看这个视频:
http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-and-Bart-De-Smet-LINQ-to-Anything/
Erik在解释这个方面做得非常出色,并为辛普森一家提供了一个简洁的Linq。
答案 2 :(得分:0)
Expression<Func<T, string, PropertyInfo>> expression = (obj, str) =>
obj.GetType()
.GetProperty(
obj.GetType()
.GetProperties()
.ToList()
.Find(prop =>
prop.Equals(str, StringComparison.OrdinalIgnoreCase).Name.ToString());
var obj = expression.Compile()(rowsData.FirstOrDefault(), sortIndex);