سؤال

أنا أستخدم إطار عمل الكيان لتوصيل قاعدة البيانات.

لدي جدول (دعنا نسميه "ملف") الذي يرفع عدة حقول:

معرف ، الإصدار ، 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" في هذه الحالة بدلاً من ذلك

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