للقيام بعملية تصفية بناءً على نطاق في استعلام LINQ ولكن نوع الخاصية هو سلسلة نصية على الرغم من أنها تخزن بيانات عددية، يمكنك استخدام الطرق التالية:
-
تحويل السلسلة إلى عدد: قبل تنفيذ الاستعلام، يمكنك تحويل قيم السلسلة إلى أرقام باستخدام
int.Parse
أوConvert.ToInt32
، ومن ثم استخدام النتائج للتصفية بناءً على النطاق المطلوب. ومثلا، إذا كان لديك خاصية تسمىVoucherNo
:مقالات ذات صلة-
تحديث قيم MySQL بناءً على الحروف الأولى.04/04/2024
-
تجنب معرّفات العناصر في تطوير الويب29/03/2024
csharpList
filteredObjects = objects .Where(obj => { int voucherNo = int.Parse(obj.VoucherNo); return voucherNo >= minValue && voucherNo <= maxValue; }) .ToList(); -
استخدام
OrderBy
بشكل مؤقت: يمكنك استخدامOrderBy
مؤقتًا لترتيب السجلات بناءً على القيم العددية للسلسلة، ثم استخدمTakeWhile
لتحديد النطاق المطلوب. هذه الطريقة تتطلب تحويل القيم إلى عدد أولاً.csharpList
filteredObjects = objects .OrderBy(obj => int.Parse(obj.VoucherNo)) .TakeWhile(obj => { int voucherNo = int.Parse(obj.VoucherNo); return voucherNo <= maxValue; }) .ToList(); -
استخدام مكتبة خارجية لتحويل القيم: إذا كنت تفضل عدم استخدام تحويل النص إلى عدد بشكل مباشر، يمكنك استخدام مكتبة مثل LINQKit التي تتيح استخدام دوال الاستعلام داخل التعبيرات مثل
AsExpandable()
وInvoke()
لتحقيق هذا الغرض.
المزيد من المعلومات
بالطبع! إذا كانت لديك أي استفسارات أو تحتاج إلى مزيد من المعلومات حول كيفية تنفيذ عملية تصفية بناءً على نطاق في استعلام LINQ باستخدام خاصية من نوع سلسلة نصية تحتوي على بيانات عددية، فلا تتردد في طرحها.