C#، LINQ ، الاستعلام الديناميكي: رمز لتصفية استعلام ديناميكي خارج المستودع

StackOverflow https://stackoverflow.com/questions/2497918

سؤال

إذا فعلت شيئًا كهذا في مستودعك:

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), ، إلخ

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top