谁能通过提供一个非常基本的示例来解释我如何在 C# 中使用 (1) iQueryable (2) 表达式树?两者不相关,而不是提出两个单独的问题,我希望在一个问题中消除我的疑问。
进阶谢谢。
谁能通过提供一个非常基本的示例来解释我如何在 C# 中使用 (1) iQueryable (2) 表达式树?两者不相关,而不是提出两个单独的问题,我希望在一个问题中消除我的疑问。
进阶谢谢。
表达式树的制作非常简单:
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 有一个非常深入的系列,将引导您创建一个 IQueryable 提供程序。
我通常不喜欢只是链接东西,但这是一个更复杂的话题。我建议看这个视频:
http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-and-Bart-De-Smet-LINQ-to-Anything/
Erik 很好地解释了这一点,并为辛普森一家提供了一个简洁的 Linq 示例。
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);