Dataview.Rowfilter AN ISO8601
سؤال
لديّ dataTable (مثيل اسمه: TimeTable) الذي تفوقه (مثيل اسمه: TimetableView) أحاول استخدامه للتصفية بناءً على تاريخ. COLUMN CLOCK_IN يحتوي على سلسلة تنسيق ISO8601. أرغب في تحديد جميع الصفوف في مقابلة DataTable/DefaultView بين 2009-10-08T08: 22: 02Z و 2009-10-08T20: 22: 02Z.
ما الذي يجب علي تصفية هذه المعايير؟ حاولت:
TimeTableView = TimeTable.DefaultView;
TimeTableView.RowFilter = "clock_in >= #2009-10-08T08:22:02Z# and #2009-10-08T20:22:02Z#";
وهذا لا يعمل بالنسبة لي. هل أعمل على كائن خاطئ أم أن بناء جملة المرشح الخاص بي خاطئ؟
المحلول
في النهاية قمت بحلها بنفسي.
للحصول على تاريخ محدد:
TimeTableView = TimeTable.DefaultView;
TimeTableView.RowFilter = String.Format("CONVERT(clock_in, System.DateTime) = #{0}#", dayToFilter.ToShortDateString());
للحصول على مجموعة من التواريخ (حيث A و B هما كائنات DateTime):
TimeTableView = TimeTable.DefaultView;
TimeTableView.RowFilter = String.Format("CONVERT(clock_in, System.DateTime) >= #{0}# AND CONVERT(clock_in, System.DateTime) <= #{1}#", A.ToShortDateString(), B.ToShortDateString());
لا تنتمي إلى StackOverflow