非常に基本的な例を提供して、C#で(1)iQueryable(2)式ツリーを使用する方法を誰かに説明してもらえますか?両方は相関していません。2つの別々の質問をする代わりに、1つの質問で疑問を解消したいと思います。
高度な感謝。
非常に基本的な例を提供して、C#で(1)iQueryable(2)式ツリーを使用する方法を誰かに説明してもらえますか?両方は相関していません。2つの別々の質問をする代わりに、1つの質問で疑問を解消したいと思います。
高度な感謝。
式ツリーの作成は非常に簡単です。
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 to Simpsons の例を示しています。
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);