سؤال

ولدي بوابة الأخبار.

لهذه البوابة لدي قاعدة بيانات مع "الأخبار" الجدول ومع الأعمدة التالية (NewsID، معرف_الفئة NewsTitle، NewsText، DateAdded، ImagePath، TotalRead، NewsType، isActive)

ويمكنني استخدام ملفات بيانات (.xsd و) وهذا واحد، عندي استفسار وترجع أخبار آخر 3 أيام "إلى فئة مخصصة أنني مشفرة، واسمه HHNews.

وHHNews الدرجة لديه وظيفة وترجع DataTable وكتابة بشدة يتضمن نتائج الاستعلام أذكر أعلاه.

والصفحة الرئيسية لديها أقسام مختلفة للحصول على الأخبار .. هذه هي؛ - عناوين (5 المقالات) - العناوين الفرعية (4 وحدات) - آخر 5 بنود الأخبار لكل من فئات الأخبار ... (فئات هي مثل؛ الرياضة، والأخبار المحلية والاقتصاد و

لفي الصفحة الرئيسية، واسترداد DataTable وعاد من الفئة. الآن أريد أن الاستعلام هذا DataTable ووبناء أقسام I ذكر أعلاه .. منها مثلا.

وإذا كان يتم استدعاء بلدي DataTable و"دينارا"، ثم هناك وسيلة لاستعلام مثل SQL هذا DT مثل "تحديد TOP (5) NewsID، NewsTitle، NewsText من حيث دينارا NewsType = 0" - 0 يمثل العنوان؟

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

المحلول

وعلى الاطلاق. يمكنك استخدام LINQ كما ذكر ديف Cluderay. لاسترداد العناوين الخاصة بك، على سبيل المثال، يمكن أن تقوم بتشغيل:

var myDataTable = dt.AsEnumerable();
var headlines = myDataTable.Where(t => t.NewsID == 0).Take(5);

نصائح أخرى

ويمكنك استخدام LINQ إلى مجموعة البيانات إذا كنت في الصافي 3.5.

إذا لم تكن في .NET Framework 3.5، يمكنك إنشاء DataView استنادا إلى كائن DataTable ثم قم بتعيين خاصية RowFilter على DataView. على سبيل المثال:

DataView myDV = new DataView(dt);
myDV.RowFilter = "NewsType = 0";

وبعد ذلك يمكنك التقاط سوى 5 الصفوف الأولى في DataView الخاص بك.

ويمكنك استخدام طريقة العرض الافتراضية لتصفية DataTable ومثل ذلك:

وdt.DefaultView.RowFilter = "NewsType = 0"؛

ولست متأكدا كيف ستحصل أعلى 5!؟

إذا كنت لا في 3.5 هل يمكن استخدام بسيط للحلقة للحصول على أعلى 5 الصفوف بعد فرز الجدول.

وهناك طريقة الاختيار على DataTable و، لا أعتقد أن هناك وسيلة للحد من كمية عاد. أنا أحب الطريقة LINQ، ولكن مجرد بديل .... ولكن الحد قد عد ذلك.

dt.Select("NewsType = 0");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top