Can anybody explain me how to use (1) iQueryable (2) Expression Tree in C# by providing a very basic example? Both are not correlated, instead of making two separate questions, I wish to clear my doubt in a single question.
Advanced Thanks.
Expression trees are very simple to make:
Expression<Func<int,int,int>> addExp = (a,b) => a + b;
or
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);
Building an IQueryable provider is fairly difficult. However, Matt Warren has a very indepth series that walks you through creating an IQueryable provider.
I generally don't like just linking stuff, but this is a more complicated topic. I suggest watching this video:
http://channel9.msdn.com/shows/Going+Deep/Erik-Meijer-and-Bart-De-Smet-LINQ-to-Anything/
Erik does a great job of explaining this, and gives a neat Linq to Simpsons example.
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);
精彩评论