تحتاج امدا التعبير OrderBy مع تحويل التاريخ والوقت

StackOverflow https://stackoverflow.com/questions/1213956

سؤال

وأنا أحاول أن إنشاء تعبير لامدا (ينق، 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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top