Сортировка и группировка списка по номеру заказа и дате создания

Я застрял в том, как отсортировать список в новый список с другой структурой, если бы кто-нибудь мог помочь мне с этой проблемой.

Заранее спасибо.

Список с типом

public class PartOrders
{
    public string orderNumber{ get; set; }
    public DateTime createdDate { get; set; }
    public string description { get; set; }
    public string name{ get; set; }
    public DateTime performedDateTime { get; set; }
    public Category category { get; set; }
}

public class Category 
{
    public string type { get; set; }
    public string Name { get; set; }
}

В списке есть много элементов с одинаковым номером заказа и датой создания.

Мой вопрос в том, как сделать новый список с типом:

public class PartOrders
{
    public string orderNumber { get; set; }
    public DateTime createdDate { get; set; }
    public List<Data> orderDate { get; set; }
} 

public class Data
{
    public string description { get; set; }
    public string name { get; set; }
    public DateTime performedDateTime { get; set; }
    public Category category { get; set; }
}

Я ценю вашу помощь

Я пробовал зацикливать readinal с помощью foreach и if condition, но это было очень сложно и медленно.

Результат должен быть в таком формате:

"Сортировка" звучит странно. Это две разные проблемы, и вы, возможно, усложняете себе жизнь, пытаясь рассматривать их как одну? Сначала переместите два списка в список List<RestOfData>, а затем отсортируйте этот список.

Ralf 21.11.2022 18:27

Спасибо за комментарий, Ральф. Я думаю найти запрос LINQ, зациклив эти два списка и сохранив результат в новом списке типа OrderedList

Junior.netare 21.11.2022 19:05

Похоже, что модель List1 не связана с моделью List2, так как же объединить две модели в модель RestOfData?

Yiyi You 22.11.2022 03:27

Привет @Yiyi You, Id и createdDate как в List1, так и в List2 одинаковы в моделях, поэтому моя проблема заключается в том, как получить один идентификатор и createdDate в OrderedList и список общих элементов в виде списка в List<RestOfData>, спасибо

Junior.netare 22.11.2022 07:20
[JS за 1 час] - 9. Асинхронный
[JS за 1 час] - 9. Асинхронный
JavaScript является однопоточным, то есть он может обрабатывать только одну задачу за раз. Для обработки длительных задач, таких как сетевые запросы,...
Топ-10 компаний-разработчиков PHP
Топ-10 компаний-разработчиков PHP
Если вы ищете надежных разработчиков PHP рядом с вами, вот список лучших компаний по разработке PHP.
Скраппинг поиска Apple App Store с помощью Python
Скраппинг поиска Apple App Store с помощью Python
📌Примечание: В этой статье я покажу вам, как скрапировать поиск Apple App Store и получить точно такой же результат, как на Apple iMac, потому что...
Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
Подъем в javascript
Подъем в javascript
Hoisting - это поведение в JavaScript, при котором переменные и объявления функций автоматически "перемещаются" в верхнюю часть соответствующих...
Улучшение генерации файлов Angular
Улучшение генерации файлов Angular
Angular - это фреймворк. Вы можете создать практически любое приложение без использования сторонних библиотек.
0
4
87
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Кажется, что ваши «списки» на самом деле не списки, а объекты данных или структуры. Первое, что я хотел бы сделать, это создать интерфейс для обоих объектов, которые они должны реализовать. Тогда вы можете просто

List1<ICommonInterface>.Concat(List2<ICommonInterface>).OrderBy(etc..).ThenBy(etc..)

Оба из них.

Спасибо, Хорст, я пытаюсь отсортировать List<List1> и List<List2> с элементами, имеющими одинаковый идентификатор, чтобы создать новый List<OrderedList> с идентификатором и createdDate и List<RestOfData>

Junior.netare 22.11.2022 07:47
Ответ принят как подходящий

Вам лучше изменить RestOfData следующим образом и использовать List<RestOfData> вместо OrderedList:

 public class RestOfData
{
            public string id { get; set; }
            public DateTime createdDate { get; set; }
            public string descriptionA { get; set; }
            public string name{ get; set; }
            public DateTime performedDateTime { get; set; }
            public Gender genderA{ get; set; }
            public string codeData{ get; set; }
            public string descriptionB { get; set; }
            public string orderNumber { get; set; }
            public float total{ get; set; }
            public Gender genderB { get; set; }
}

А затем используйте:

List<List1> l = ...;
List<List2> l1 = ...;
List<RestOfData> datalist = (from a in l
                          join b in l1 on a.id equals b.id
                          select new RestOfData()
                          {
                              id=a.id,
                              createdDate=a.createdDate,
                              descriptionA=a.descriptionA,
                              name=a.name,
                              performedDateTime=a.performedDateTime,
                              genderA=a.genderA,
                              codeData=b.codeData,
                              descriptionB=b.descriptionB,
                              orderNumber=b.orderNumber,
                              total=b.total,
                              genderB=b.genderB
                          }).OrderBy(xxx).ToList();

Greate Yiyi You :), который решит половину проблемы, окончательный список будет List<orderedData> class classorderedData { public string id { get; поставил; } public DateTime createdDate { получить; поставил; } данные Public List<Data> { get; поставил; } } class class Data { public string descriptionA { get; поставил; } общедоступное имя строки{ получить; поставил; } . . . } где каждый элементorderedData имеет id , createdDate и список данных, которые имеют тот же id иorderDate.

Junior.netare 22.11.2022 11:01

Вы не должны использовать список в своем orderedData. Идентификатор должен быть уникальным, поэтому для идентификатора будет только один Data, а не список для идентификатора.

Yiyi You 22.11.2022 11:20

Привет Yiyi You, может быть, я не ясно написал свой вопрос, я редактирую код, так что не могли бы вы взглянуть на него

Junior.netare 23.11.2022 08:02

Другие вопросы по теме