Я застрял в том, как отсортировать список в новый список с другой структурой, если бы кто-нибудь мог помочь мне с этой проблемой.
Заранее спасибо.
Список с типом
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, но это было очень сложно и медленно.
Результат должен быть в таком формате:
Спасибо за комментарий, Ральф. Я думаю найти запрос LINQ, зациклив эти два списка и сохранив результат в новом списке типа OrderedList
Похоже, что модель List1 не связана с моделью List2, так как же объединить две модели в модель RestOfData?
Привет @Yiyi You, Id и createdDate как в List1, так и в List2 одинаковы в моделях, поэтому моя проблема заключается в том, как получить один идентификатор и createdDate в OrderedList и список общих элементов в виде списка в List<RestOfData>, спасибо
Кажется, что ваши «списки» на самом деле не списки, а объекты данных или структуры. Первое, что я хотел бы сделать, это создать интерфейс для обоих объектов, которые они должны реализовать. Тогда вы можете просто
List1<ICommonInterface>.Concat(List2<ICommonInterface>).OrderBy(etc..).ThenBy(etc..)
Оба из них.
Спасибо, Хорст, я пытаюсь отсортировать List<List1> и List<List2> с элементами, имеющими одинаковый идентификатор, чтобы создать новый List<OrderedList> с идентификатором и createdDate и List<RestOfData>
Вам лучше изменить 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.
Вы не должны использовать список в своем orderedData. Идентификатор должен быть уникальным, поэтому для идентификатора будет только один Data, а не список для идентификатора.
Привет Yiyi You, может быть, я не ясно написал свой вопрос, я редактирую код, так что не могли бы вы взглянуть на него
"Сортировка" звучит странно. Это две разные проблемы, и вы, возможно, усложняете себе жизнь, пытаясь рассматривать их как одну? Сначала переместите два списка в список List<RestOfData>, а затем отсортируйте этот список.