تحتاج امدا التعبير OrderBy مع تحويل التاريخ والوقت
-
06-07-2019 - |
سؤال
وأنا أحاول أن إنشاء تعبير لامدا (ينق، C # 3.5) التي يمكن أن تؤدي إلى OrderBy على قيمة من نوع بيانات سلسلة ولكن الذي يحتوي في الواقع التاريخ والوقت، تحليل قادرة.
وعلى سبيل المثال، قد يكون القيم النموذجية "5/12/2009"، "2008/1/14"، وما إلى ذلك.
ويعمل بند OrderBy أدناه بشكل صحيح للأمر (كما لو سلسلة البيانات)، ولكن أريد فعلا لعلاج القيم كما DateTimes، وإجراء الفرز حسب التاريخ. (وsortColumn سيكون شيئا مثل "dateCreated".)
List<MyObject> orderedList = unorderedList.OrderBy(p => p.Details.Find(s => s.Name == sortColumn).Value).ToList();
هل هناك طريقة لتحويل القيم في المسند للقيام بذلك؟ أي عن تقديره للمساعدة!
المحلول
وبدلا من ذلك الإجمالي وغير فعالة:
List<MyObject> orderedList = unorderedList.OrderBy(p => DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value)).ToList();
لتقليل عدد عمليات البحث / تحليل:
List<MyObject> orderedList =
(from extracted in (from p in unorderedList
select new { Item = p, Date = DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value })
orderby extracted.Date
select extracted.Item)
.ToList();
نصائح أخرى
ومشروع التاريخ / قيمة الوقت وبعد ذلك نوع من قبلها.
var orderedList =
(from p in unorderedList
let value = DateTime.Parse(p.Details.Find(s => s.Name == sortColumn).Value)
orderby value
select p)
.ToList();
لا تنتمي إلى StackOverflow