Сравните два списка на бритве и отсортируйте их по самым новым (оба создали дату и время) - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу отсортировать две модели по дате и времени, каждая из которых идет на одну временную шкалу, поэтому мне нужно, чтобы самые новые из них были в начале временной шкалы списка, я нашел решения, такие как модели Union, но я хочу, чтобы их осталось двеотдельные списки .. Возможно ли это?

foreach (var list1 in model.list1.OrderByDescending(a => a.created_datetime))
{
    09/18/19
}

foreach (var list2 in model.list2.OrderByDescending(a => a.created_datetime))
{
    09/19/19
}

Теперь я хочу, чтобы результат временной шкалы был указан во втором списке, потому что это более ранний результат

Ответы [ 2 ]

0 голосов
/ 21 сентября 2019

Спасибо за вашу помощь, самое полезное решение, которое я нашел для этой проблемы: - Сортировка списка по функции JS, которая работает с загруженным контентом.

вот код:

var item = $(".sort-item").sort(function (a, b) {
            var Adate = $(a).attr("data-date");
            var Bdate = $(b).attr("data-date");
            var Atime = $(a).attr("data-time");
            var Btime = $(b).attr("data-time");
            if (Adate < Bdate) return 1;
            if (Adate > Bdate) return -1;
            if (Atime < Btime) return 1;
            if (Atime > Btime) return -1;
            return 0;
        });
        $(".timeline").prepend(item);
0 голосов
/ 19 сентября 2019

Это ты о чем?(С использованием Linq)

var merged = list1.Union(list2).OrderByDescending(d => d.Date);

Обратите внимание, что это возможно только в том случае, если два списка одного типа.Еще обратите внимание, что это возвращает IEnumerable, а не новый List, поэтому каждый раз, когда вы его перечисляете, слияние будет вычислено.Вы должны вызвать ToList () в конце, если вы хотите создать новый список, чтобы предотвратить это, но это может быть очень неоптимальным по производительности, если у вас большие списки.

Пример программы:

using System;
using System.Collections.Generic;
using System.Linq;

namespace Lists
{
    class Program
    {
        static void Main(string[] args)
        {
            var list1 = new List<DateItem>
            {
                new DateItem{Date = DateTime.UtcNow.AddDays(-2), Name = "The day before yesterday" },
                new DateItem{Date = DateTime.UtcNow.AddDays(1), Name = "Tomorrow" }
            };

            var list2 = new List<DateItem>
            {
                new DateItem{Date = DateTime.UtcNow.AddDays(2), Name = "The day after tomorrow" },
                new DateItem{Date = DateTime.UtcNow.AddDays(-1), Name = "Yesterday" },
                new DateItem{Date = DateTime.UtcNow, Name = "Today" }
        };

            var merged = list1.Union(list2).OrderByDescending(d => d.Date);

            foreach (var day in merged)
            {
                Console.WriteLine(day.Name);
            }
        }
    }

    class DateItem
    {
        public DateTime Date { get; set; }
        public string Name { get; set; }
    }

}
...