Expression gövdesini inceleme
Expression Body, NodeType ve Parameter okumayı öğrenirsin.
Expression gövdesini inceleme
Bir ifade ağacının yapısını Body, NodeType, Parameters ve Type ile gezersin. NodeType ifadenin işlem türünü (ör. Add, Multiply, Lambda) verir.
Body iç ifadeyi tutar. Örneğin x => x * x için Body bir Multiply düğümüdür; Body.NodeType Multiply değerini döndürür. Bu, ORM'lerin sorguyu anlaması için kullanılır.
Parameter okuma
expr.Parameters, lambda parametrelerinin listesidir. Her öğe bir ParameterExpression'dır ve Name ile Type özelliklerine sahiptir. (a, b) => a + b lambdası iki parametre içerir.
Parametreleri okumak, ifade ağacını sıfırdan yeniden kurmak veya başka bir biçime çevirmek (ör. SQL) için gereklidir. Sağlayıcılar, hangi parametrenin hangi sütuna karşılık geldiğini bu liste üzerinden belirler.
Uygulama İfade gövdesini incele
Expression<Func<int, int, int>> add = (a, b) => a + b; şeklinde iki parametreli bir ifade ağacı tanımla. add.Body.NodeType ve add.Body değerlerini ayrı ayrı Console.WriteLine ile yazdır.
Örnek çözümü göster
Expression<Func<int, int, int>> add = (a, b) => a + b; ile ifade ağacını tanımla. Sonra Console.WriteLine(add.Body.NodeType); ve Console.WriteLine(add.Body); çağır.
Örnek çözüm:
using System;
using System.Linq.Expressions;
class Program
{
static void Main()
{
Expression<Func<int, int, int>> add = (a, b) => a + b;
Console.WriteLine(add.Body.NodeType);
Console.WriteLine(add.Body);
}
}
Kendini test et
-
NodeType değerini anlamına eşle
- Lambda
- Lambda ifadesi
- Multiply
- Çarpma işlemi
- Add
- Toplama işlemi
- Constant
- Sabit değer
-
İlk parametre adını al
var name = expr.____[0].Name;Cevabı göster
var name = expr.Parameters[0].Name; -
NodeType ne döndürür?
- Lambda'nın parametre listesini
- İfadenin işlem türünü (Multiply, Add, ...)
- Sonucun değerini
- İfadenin dize halini
Cevabı göster
İfadenin işlem türünü (Multiply, Add, ...) — Doğru. NodeType, ifadenin işlem türünü döndürür.