سؤال

وانا إضافة عمود السيارات زيادة (وتسمى "ROWNUM") لمائدتي وانها تعمل جيدا، وبعد ذلك يمكنني استخدام هذا الرمز إلى فرز الصفوف DataTable و:

DataView dv = MyDataSet.Tables[0].DefaultView;
dv.Sort = "columnName DESC";

حيث اسم العمود هو واحد من الأعمدة بلدي (وليس لصناعة السيارات زيادة واحد).

والآن، والمشكلة هي: عندما كنت ترغب في الحصول على أعلى 10 صفوف يمكنني استخدام هذا الرمز:

dv.RowFilter = "rowNum <= 10";

والنتيجة ليست ما أريد، لأنه عندما أفعل dv.Sort وROWNUM تعديلا (يصبح في الترتيب غير صحيح).

وكيف يمكنني الحصول على أفضل 10 الصفوف بعد فرز الصفوف؟

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

المحلول

وأنا أفضل LINQ لمثل هذه الاشياء. بدلا من ذلك، وأنا استخدم System.Linq والكتابة:

var rows = MyDataSet.Tables[0].AsEnumerable()
   .OrderByDescending(r => r["columnName"]) 
   .Take(10);

وبعد ذلك فقط ربط "الصفوف".

نصائح أخرى

وإذا أضيف .Take (10) في AsEnumerable () خط لا يعمل. ولكن إذا أضيف السطر الثاني كما هو مذكور أدناه يعمل.

var Rows = (from row in dt.AsEnumerable() 
orderby row["CostPerVeteran"] descending
select row);

dtChart = Rows.Take(10).CopyToDataTable();

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