تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مثال على Linq To Object واستخدام استعلامات Linq متداخلة
#1
كاتب الموضوع : samerselo


كود :
Dim chbx = From b In (From a In Me.GroupBox2.Controls _
Where TypeOf a Is CheckBox Select a) _
Where b.checked = True Order By b.name Select Mid(b.name, b.name.length - 1)

Dim lbl = From f In Me.GroupBox2.Controls _
Where TypeOf f Is Label _
And chbx.ToArray().Contains(Mid(f.name, f.name.length - 1)) _
Order By f.name Select f
لا حظ في الاستعلام الأول كيف انني استخدت استعلام ثاني بين القوسين ضمن الاستعلام الأول وذلك كي أحصل على النتيجة التي أرغب بها مع الانتباه إلى امكانية تعشيش الاستعلامات بدون حدود

لاحظ أيضا في الاستعلام الثاني كيف أنني استخدمت نتيجة الاستعلام الأول المركب ضمن قسم شرط Where من أجل الحصول على النتيجة التي أرغب بها


هناك إمكانية أيضا لدمج الاستعلامين في استعلام واحد أيضا ... فهل يمكنك عزيزي قارئ هذا الموضوع أن تقوم بهذا بشكل صحيح؟؟؟؟؟؟؟؟؟؟

طبعا يمكنك الرجوع إلى مقالاتي بخصوص Linq أو كتابي حيث ضمنته دورة Linq كاملة إن واجهت صعوبة في فهم بعض النقاط
}}}
تم الشكر بواسطة:
#2
كاتب المشاركة : Marwan

حسب ما فهمت من الاستعلام فنحن نريد استخراج الأدوات من داخل أداة GroupBox التي من نوع Label حيث آخر حرف من اسم الليبل مساوي لآخر حرف من اسم أي أداة CheckBox موجودة داخل الـGroupBox حيث الخاصية Checked للأداة CheckBox الأخيرة تساوي True.

هذا ما توصلت اليه:


كود :
Dim controlsWithSameNameEnding = _
From CheckBox As CheckBox In (From c In Me.GroupBox2.Controls Where TypeOf c Is CheckBox Select c), _
Label As Label In (From l In Me.GroupBox2.Controls Where TypeOf l Is Label Select l) _
Where CheckBox.Checked = True AndAlso Mid(Label.Name, Label.Name.Length - 1) = Mid(CheckBox.Name, CheckBox.Name.Length - 1) Order By CheckBox.Name _
Select CheckBox, Label
الاستعلام يعيد كان من نوع IEnumerable Of Label
يمكن الاستغناء عن الدالة Mid بالدالة Substring للفئة String


كود :
Dim controlsWithSameNameEnding = From CheckBox As CheckBox In (From c In Me.GroupBox2.Controls Where TypeOf c Is CheckBox Select c), _
Label As Label In (From l In Me.GroupBox2.Controls Where TypeOf l Is Label Select l) _
Where CheckBox.Checked = True AndAlso Label.Name.Substring(Label.Name.Length - 1) = CheckBox.Name.Substring(CheckBox.Name.Length - 1) Order By CheckBox.Name _
Select CheckBox, Label
}}}
تم الشكر بواسطة:
#3
كاتب المشاركة : samerselo

رائع اخ مروان منتظر بقية الاخوان - يوجد العديد من الحلول لايوجد حل وحيد لسؤال برمجة

مع ملاحظة بسيطة وهي ان اخر حرفين هما ترقيم لـ Label و CheckBox وأريد تنفيذ أمر خاص على محتويات Label التي توافق تحكمات CheckBox التي قيمتها True والتي تمتلك نفس الترقيم الاستعلام هدفه هو الحصول على تلك التحكمات من نوع Label وتنفيذ العملية عليها فيما بعد باستخدام حلقة For Each

تخيل هذه العملية لو أنك تريد تنفيذها باستخدام IF !!!!
}}}
تم الشكر بواسطة:
#4
كاتب المشاركة : samerselo

وهذه طريقتي في حل المسألة

كود :
Dim lbl = From f In Me.GroupBox2.Controls _
Where TypeOf f Is Label _
And (From b In (From a In Me.GroupBox2.Controls _
Where TypeOf a Is CheckBox Select a) _
Where b.checked = True Order By b.name _
Select Mid(b.name, b.name.length - 1)).ToArray().Contains(Mid(f.name, _
f.name.length - 1)) Order By f.name Select f
لاحظ أن هذا الاستعلام يحتوي على كلا الاستعلامين الموجودين في بدابة الموضوع

آرجو أن أكون قد أوصلت الفكرة بشكل جيد
}}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم