C#، LINQ ، الاستعلام الديناميكي: رمز لتصفية استعلام ديناميكي خارج المستودع
-
21-09-2019 - |
سؤال
إذا فعلت شيئًا كهذا في مستودعك:
IQueryable<CarClass> GetCars(string condition, params object[] values) {
return db.Cars.Where(condition, values);
}
وقمت بتعيين الحالة والقيم خارج المستودع:
string condition = "CarMake == @Make";
object[] values = new string[] { Make = "Ford" };
var result = myRepo.GetCars( condition, values);
كيف ستتمكن من فرز النتيجة خارج المستودع باستخدام الاستعلام الديناميكي؟
return View( "myView", result.OrderBy("Price"));
بطريقة ما أفقد طبيعة الديناميكية عندما تخرج البيانات من المستودع. ونعم ، لم أكن أعمل على كيفية إرجاع نوع carclass حيث يمكنك عادةً تحديد carclass {fieldname = m.fieldname ، ...}
المحلول
يتطلب الاستعلام الديناميكي:
- المصدر يكون
IQueryable<T>
(لذلك إذا كان كذلكIEnumerable<T>
أو ما شابه ، فقط اتصل.AsQueryable()
عليه) - يتم الرجوع إلى DLL إضافية في الكود الذي يريد إجراء استعلام ديناميكي
- المناسب
using
التوجيهات التي يجب أن تكون في مكانها في الجزء العلوي من ملف المصدر المحلي
تحقق من هؤلاء الثلاثة ، ويجب أن تكون قادرًا على إضافة .Where(condition)
, .OrderBy(name)
, ، إلخ
لا تنتمي إلى StackOverflow