آشنایی با Expression Tree در LINQ – آموزش LINQ

تصویر linq-expression-tree_11126 آشنایی با Expression Tree در LINQ - آموزش LINQ

آشنایی با Expression Tree در LINQ

در این بخش به بررسی Expression Tree در زبان کوئری نویسی LINQ پرداخته ایم. همانطور که از اسم آن نیز مشخص است، یک ساختار درختی است که هر گره در آن یک Expression است. برای مثال از Expression Tree می توان برای نمایش یک فرمول ریاضی مانند x < y که در آن x، < و y هر کدام یک گره هستند. یک Expression Tree در حقیقت نمایش in-memory از یک عبارت لامبدا است و فقط عناصر مربوط به کوئری را نگه می دارد نه نتیجه اجرای کوئری را. برای درک بهتر به مثال زیر توجه کنید:

کامپایلر Expression فوق را به Expression Tree زیر تبدیل می کند:

شما خودتان هم می توانید یک Expression Tree ایجاد کنید. برای مثال عبارت لامبدا زیر را در نظر بگیرید:

عبارت فوق مشابه متد زیر است:

برای ساخت Expression Tree ابتدا یک عبارت برای ورودی ایجاد کنید. در این مثال ورودی ما از نوع Student و نام ورودی هم s است. پس عبارت مربوط به ورودی ما به این شکل خواهد بود:

حال باید عبارت مربوط به خاصیت Age مربوط به شیء Student را ایجاد کنیم. برای اینکار می توانیم از Expression.Property() استفاده کنیم:

چون مقدار 18 یک مقدار ثابت است و قرار نیست تغییر کند یک عبارت از نوع Constant برای آن ایجاد می کنیم:

تا اینجا ما برای خاصیت Age و مقدار 18 عبارت مورد نیاز را ایجاد کردیم. بعد از آن باید یک عبارت دیگر برای بررسی مقادیر این دو عبارت ایجاد کنیم. برای اینکار می توانیم از متد Expression.GreaterThanOrEqual() استفاده کنیم:

حال با استفاده از متد Expression.Lambda می توانیم آن ها را به هم وصل کرده Expression Tree مورد نظر را ایجاد کنیم:

نمونه کامل برای ساخت Expression Tree:

خروجی مثال:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است