alimanam
چهارشنبه 12 مهر 1391, 00:32 صبح
با سلام
من سعی میکنم در حد چند پست دوستان عزیزی که دوست دارن از تکنولوژی Linq در برنامه هاشون استفاده کنن , اما از اسمش به دلیل ناآشنایی وحشت دارن ! این تاپیک رو به جلو ببرم .
بوسیله Linq میشه خیلی راحت ( بسیار شبیه با اسکریپ های SQL ) در بین انبوهی از داده ها جستجو و فیلترینگ کرد . جالبی Linq این هست که متکی به زبان خاصی نیست و هر زبانی که از این تکنولوژی پشتیبانی کنه میتونه از امکاناتش استفاده کنه . Linq میتونه با انواع پایگاه های داده ایی ,
آرایه ها , فایل های XML و به صورت کلی با هر نوع منبع داده ی رابطه ایی ارتباط برقرار کنه .
LINQ عمل خودش رو از یک سری عملگرهای پرس و جو که بوسیله توابع توسعه , پیاده سازی شده هستن ، بدست میاره این عملگرهای پرس و جو بر روی اشیائی که رابطه های IEnumerable و IQueryable را پیاده سازی کرده باشند، اعمال میکنه .
خوب قبل از اینکه از این کلمات قلمبه گیجتون کنم بریم سر اصل ماجرا که بسیار ساده گفته میشه و به مرور کمی کئوری های پیچیده تری رو توضیح میدم .
در اولین گام یک پروژه جدید اضافه کنید ( از نوع windows forms application یا کنسول application )
لازم به یاد آوری هستش که تکنولوژی Ling از نسخه 3 به بعد فرم ورک اضافه شده پس پروژه ایی که ایجاد میکنین حتماً باید از نسخه 3 به بالای فرم ورک استفاده کنه .
در ابتدا فضای نام زیر رو در محیط کد نویسی به کلاس اصلی فرم برنامه اضافه کنید
Imports System.linq
درادامه , یک کلاس عمومی که دارای چند متغییر ساده است پیاده سازی میکنیم . قراره از این کلاس ( کلاس Person ) در ادامه کار استفاده کنیم .
Partial Friend Class Person
Public [Name] As String
Public Family As String
Public Age As Integer
End Class
خوب همانطور که میبینین کلاس Person سه تا , متغییر عمومی به نام های Name , Family , Age داره که فکر نمیکنم نیاز به توضیح اضافه ایی داشته باشن .
در ادامه کار میائیم یک آبجکت به صورت آرایه که از کلاس Person مشتق شده , میسازیم و به این آبجکت مقادیر دلخواهی رو نسبت میدیم .
Private persons As Person() = New Person() { _
New Person() With {.Name = "Ali", .Family = "Hoseini", .Age = 19}, _
New Person() With {.Name = "Reza", .Family = "Majidi", .Age = 14}, _
New Person() With {.Name = "Mohammad", .Family = "Baghernia", .Age = 30}, _
New Person() With {.Name = "Ahmad", .Family = "Jamilzadeh", .Age = 27}, _
New Person() With {.Name = "Kambiz", .Family = "Mirzaei", .Age = 16}, _
New Person() With {.Name = "Maryam", .Family = "Mohammadi", .Age = 20}, _
New Person() With {.Name = "Reza", .Family = "Karimi", .Age = 15}, _
New Person() With {.Name = "Majid", .Family = "Porrang", .Age = 25}}
خوب الان بر روی فرم اصلی برنامه یک کنترل ListBox اضافه کنید . ( این کنترل برای نمایش اطلاعاتی که قراره بوسیله Linq مورد جستجو قرار میگیره استفاده میشه . یعنی عمل جستجو بوسیله Linq بر روی آبجکت persons که ایجاد کردیم انجام میشه )
حالا یک کنترل Bottun به فرم اضافه کنید و کدهای زیر رو در رویداد کلیک اش بنویسین .
Dim lpersons = From d In persons Where d.Family.StartsWith("M") AndAlso d.Age > 16 Select d
For Each item In lpersons
ListBox1.Items.Add(item.Name & " " & item.Family & " - " & item.Age)
Next
در خط اول کد بالا مشاهد میشه که کدهای استفاده شده بسیار شبیه کدهای اسکریپتی sql هستش ! به اعمال شرط توجه کنین . در ابتدا بوسیله کلمه کلیدی From متغییری به نام d که خودش بوسیله کلمه کلیدی In از آیتم های آبجکت persons مشتق شده معرفی کردیم در ادامه بوسیله کلمه کلیدی Where شرط دلخواهی که همان فامیلی که با کاراکتر "M" شروع میشن رو جستجو میکنه . البته اگه دقت کرده باشین من یک شرط دیگه هم به این کئوری اضافه کردم یعنی بوسیله کلمه کلیدی AndAlso به شرط قبلی این شرط رو اضافه کردم که فردی که دارم جستجوش میکنم سنش باید از 16 بیشتر باشه ! در انتها این کئوری رو انتخاب کرده و نتیجه رو در آرایه Ipersons میریزیم .
خط های بعدی هم که کاملاً واضح و روشنه .
کدهای برنامه فوق :
Imports System.linq
Public Class Form1
Partial Friend Class Person
Public [Name] As String
Public Family As String
Public Age As Integer
End Class
Private persons As Person() = New Person() { _
New Person() With {.Name = "Ali", .Family = "Hoseini", .Age = 19}, _
New Person() With {.Name = "Reza", .Family = "Majidi", .Age = 14}, _
New Person() With {.Name = "Mohammad", .Family = "Baghernia", .Age = 30}, _
New Person() With {.Name = "Ahmad", .Family = "Jamilzadeh", .Age = 27}, _
New Person() With {.Name = "Kambiz", .Family = "Mirzaei", .Age = 16}, _
New Person() With {.Name = "Maryam", .Family = "Mohammadi", .Age = 20}, _
New Person() With {.Name = "Reza", .Family = "Karimi", .Age = 15}, _
New Person() With {.Name = "Majid", .Family = "Porrang", .Age = 25}}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim lpersons = From d In persons Where d.Family.StartsWith("M") AndAlso d.Age > 16 Select d
For Each item In lpersons
ListBox1.Items.Add(item.Name & " " & item.Family & " - " & item.Age)
Next
End Sub
End Class
من در ادامه تاپیک سعی میکنم با مثال های متعددی که درباره Linq میشه زد شما رو با این تکنولوژی مفید بیشتر آشنا کنم .
موفق باشید./
من سعی میکنم در حد چند پست دوستان عزیزی که دوست دارن از تکنولوژی Linq در برنامه هاشون استفاده کنن , اما از اسمش به دلیل ناآشنایی وحشت دارن ! این تاپیک رو به جلو ببرم .
بوسیله Linq میشه خیلی راحت ( بسیار شبیه با اسکریپ های SQL ) در بین انبوهی از داده ها جستجو و فیلترینگ کرد . جالبی Linq این هست که متکی به زبان خاصی نیست و هر زبانی که از این تکنولوژی پشتیبانی کنه میتونه از امکاناتش استفاده کنه . Linq میتونه با انواع پایگاه های داده ایی ,
آرایه ها , فایل های XML و به صورت کلی با هر نوع منبع داده ی رابطه ایی ارتباط برقرار کنه .
LINQ عمل خودش رو از یک سری عملگرهای پرس و جو که بوسیله توابع توسعه , پیاده سازی شده هستن ، بدست میاره این عملگرهای پرس و جو بر روی اشیائی که رابطه های IEnumerable و IQueryable را پیاده سازی کرده باشند، اعمال میکنه .
خوب قبل از اینکه از این کلمات قلمبه گیجتون کنم بریم سر اصل ماجرا که بسیار ساده گفته میشه و به مرور کمی کئوری های پیچیده تری رو توضیح میدم .
در اولین گام یک پروژه جدید اضافه کنید ( از نوع windows forms application یا کنسول application )
لازم به یاد آوری هستش که تکنولوژی Ling از نسخه 3 به بعد فرم ورک اضافه شده پس پروژه ایی که ایجاد میکنین حتماً باید از نسخه 3 به بالای فرم ورک استفاده کنه .
در ابتدا فضای نام زیر رو در محیط کد نویسی به کلاس اصلی فرم برنامه اضافه کنید
Imports System.linq
درادامه , یک کلاس عمومی که دارای چند متغییر ساده است پیاده سازی میکنیم . قراره از این کلاس ( کلاس Person ) در ادامه کار استفاده کنیم .
Partial Friend Class Person
Public [Name] As String
Public Family As String
Public Age As Integer
End Class
خوب همانطور که میبینین کلاس Person سه تا , متغییر عمومی به نام های Name , Family , Age داره که فکر نمیکنم نیاز به توضیح اضافه ایی داشته باشن .
در ادامه کار میائیم یک آبجکت به صورت آرایه که از کلاس Person مشتق شده , میسازیم و به این آبجکت مقادیر دلخواهی رو نسبت میدیم .
Private persons As Person() = New Person() { _
New Person() With {.Name = "Ali", .Family = "Hoseini", .Age = 19}, _
New Person() With {.Name = "Reza", .Family = "Majidi", .Age = 14}, _
New Person() With {.Name = "Mohammad", .Family = "Baghernia", .Age = 30}, _
New Person() With {.Name = "Ahmad", .Family = "Jamilzadeh", .Age = 27}, _
New Person() With {.Name = "Kambiz", .Family = "Mirzaei", .Age = 16}, _
New Person() With {.Name = "Maryam", .Family = "Mohammadi", .Age = 20}, _
New Person() With {.Name = "Reza", .Family = "Karimi", .Age = 15}, _
New Person() With {.Name = "Majid", .Family = "Porrang", .Age = 25}}
خوب الان بر روی فرم اصلی برنامه یک کنترل ListBox اضافه کنید . ( این کنترل برای نمایش اطلاعاتی که قراره بوسیله Linq مورد جستجو قرار میگیره استفاده میشه . یعنی عمل جستجو بوسیله Linq بر روی آبجکت persons که ایجاد کردیم انجام میشه )
حالا یک کنترل Bottun به فرم اضافه کنید و کدهای زیر رو در رویداد کلیک اش بنویسین .
Dim lpersons = From d In persons Where d.Family.StartsWith("M") AndAlso d.Age > 16 Select d
For Each item In lpersons
ListBox1.Items.Add(item.Name & " " & item.Family & " - " & item.Age)
Next
در خط اول کد بالا مشاهد میشه که کدهای استفاده شده بسیار شبیه کدهای اسکریپتی sql هستش ! به اعمال شرط توجه کنین . در ابتدا بوسیله کلمه کلیدی From متغییری به نام d که خودش بوسیله کلمه کلیدی In از آیتم های آبجکت persons مشتق شده معرفی کردیم در ادامه بوسیله کلمه کلیدی Where شرط دلخواهی که همان فامیلی که با کاراکتر "M" شروع میشن رو جستجو میکنه . البته اگه دقت کرده باشین من یک شرط دیگه هم به این کئوری اضافه کردم یعنی بوسیله کلمه کلیدی AndAlso به شرط قبلی این شرط رو اضافه کردم که فردی که دارم جستجوش میکنم سنش باید از 16 بیشتر باشه ! در انتها این کئوری رو انتخاب کرده و نتیجه رو در آرایه Ipersons میریزیم .
خط های بعدی هم که کاملاً واضح و روشنه .
کدهای برنامه فوق :
Imports System.linq
Public Class Form1
Partial Friend Class Person
Public [Name] As String
Public Family As String
Public Age As Integer
End Class
Private persons As Person() = New Person() { _
New Person() With {.Name = "Ali", .Family = "Hoseini", .Age = 19}, _
New Person() With {.Name = "Reza", .Family = "Majidi", .Age = 14}, _
New Person() With {.Name = "Mohammad", .Family = "Baghernia", .Age = 30}, _
New Person() With {.Name = "Ahmad", .Family = "Jamilzadeh", .Age = 27}, _
New Person() With {.Name = "Kambiz", .Family = "Mirzaei", .Age = 16}, _
New Person() With {.Name = "Maryam", .Family = "Mohammadi", .Age = 20}, _
New Person() With {.Name = "Reza", .Family = "Karimi", .Age = 15}, _
New Person() With {.Name = "Majid", .Family = "Porrang", .Age = 25}}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim lpersons = From d In persons Where d.Family.StartsWith("M") AndAlso d.Age > 16 Select d
For Each item In lpersons
ListBox1.Items.Add(item.Name & " " & item.Family & " - " & item.Age)
Next
End Sub
End Class
من در ادامه تاپیک سعی میکنم با مثال های متعددی که درباره Linq میشه زد شما رو با این تکنولوژی مفید بیشتر آشنا کنم .
موفق باشید./