إرجاع كل الصف ذو قيمة أقصى
-
01-10-2019 - |
سؤال
أنا أستخدم إطار عمل الكيان لتوصيل قاعدة البيانات.
لدي جدول (دعنا نسميه "ملف") الذي يرفع عدة حقول:
معرف ، الإصدار ، XYZ Primarky Key يعتمد على المعرف والإصدار. لذلك يمكنني الحصول على عدة خط مع نفس المعرف ولكن إصدار مختلف (وعن العجز).
السؤال هو:
كيف يمكنني ، مع تعبير Lambda ، أن أطلب من إطار الكيان الخاص بي ، أن أعيد لي كل الإصدار الأخير من "ملف".
مثال: البيانات:
ID;Version;Other
1;1;YX
1;2;YZ
2;1;AH
2;2;BH
2;5;CA
1;3;AAA
نتيجة:
1;3;AAA
2;5;CA
شكرًا لك!
!! الهدف من ذلك هو أن قاعدة البيانات لا تحتاج إلى إرجاع جميع الصفوف ، وتسمى مرة واحدة فقط ، لذا نسيت الحل مثل getAllrows وقراءة المجموعة بأكملها وحفظ الأحدث فقط ، أو الحصول على قائمة بجميع المعرف الممكن إصدار foreach في طلب آخر. شكرًا!
المحلول
يمكنك استخدام استعلام linqtoentites التالي لهذا:
var result = from f in myEntities.Files
group f by f.ID into g
select g.OrderByDescending(f => f.Version).FirstOrDefault();
ربما يكون من المنطقي استخدام First
بدلاً من FirstOrDefault
ولكن بعد ذلك تحصل على UnsupportedException
:
لا يمكن استخدام الطريقة "الأولى" إلا كعملية استعلام نهائية. فكر في استخدام طريقة "FirstorDefault" في هذه الحالة بدلاً من ذلك