سؤال

لا أعرف ما إذا كانت هناك طريقة سهلة للقيام بذلك ، لكن ما أود القيام به هو:

var highlights = db.Banners.Where(h => h.Category == "highlight").ToList().GetRange(0,4);

لدي هذه اللافتات النموذجية حيث لدي بعض النقاط البارزة ، لكنني أود استرداد 4 أبرز عشوائي فقط في كل مرة في ترتيب مختلف.

لذا فإن الكود الذي أستخدمه فقط استرداد نطاق من [0..4] أبرز ما ، وإذا كان لديك أقل من 4 ، فإنه يعيد خطأً ، ولم تكن عشوائية.

أي أفكار حول كيف يمكنني فعل ذلك بسهولة؟

النتيجة التي أود الحصول عليها هي قائمة<لافتة> لتمريره إلى العرض ولكن في كل مرة بترتيب مختلف مثل:

[1,3,4,2] || [2,1,4,3] || [12,32,15,3]

وأعتقد أن كل شيء :)

شكرًا جزيلاً

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

المحلول

هنا هو مثال على أخذ عينات عشوائية LINQ على codeproject

نصائح أخرى

لإضفاء الطابع عشوائي على لافتات والحصول على أربعة أو أقل يمكنك القيام بذلك:

Random r = new Random(DateTime.Now.Ticks);

var highlights = db.Banners.Where(h => h.Category == "highlight").
    OrderBy(h => r.Next()).Take(4)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top