تخزين التخزين المؤقت لنتائج LINQ دون استخدام SKIP () أو خذ ()

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

سؤال

أنا أستخدم LINQ لترحيل البيانات في موقع الويب الخاص بي. أنا أستخدم حاليًا Skip () وأخذ () لأداء الترحيل. الآن أريد أن أقوم بتخزين البيانات باستخدام تبعيات ذاكرة التخزين المؤقت بحيث يتم إبطال ذاكرة التخزين المؤقت إذا تغيرت البيانات. ومع ذلك SQL Server إعلامات الاستعلام لا تدعم التعبير العلوي. هل هناك أي طرق بديلة للاستعلام عن مجموعة من البيانات مع LINQ لا تولد أعلى؟ أو طريقة أخرى لتخزين هذه البيانات بحيث تكون تبطل؟

هل كانت مفيدة؟

المحلول

اسحب بياناتك في ممرين:

// step1: get the IDs of the items in the current page.
List<int> customerIds = db.Customers
  .Where(filter)
  .OrderBy(c => c.FirstName)
  .ThenBy(c => c.CustomerID)
  .Select(c => c.CustomerID)
  .Skip(200)
  .Take(20)
  .ToList();

// step2: get the items for that page
List<Customer> customers = db.Customers
  .Where(c => customerIds.Contains(c.CustomerID))
  .ToList();

نصائح أخرى

قم بتخزين Cache مجموعة النتائج بأكملها ، وتعيين sqldependancy على ذلك.

اقرأ المجموعة بأكملها من ذاكرة التخزين المؤقت ، ثم استخدم Skip/Take On ذلك.

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