开发者

iQueryable and Expression Tree [closed]

开发者 https://www.devze.com 2022-12-08 20:37 出处:网络
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references,or expertise, but this question will likely solicit debate, a
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. 开发者_如何转开发 Closed 9 years ago.

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);
0

精彩评论

暂无评论...
验证码 换一张
取 消