Я пытаюсь абстрагировать данные от комплекса и создать EventDto. И я смог сделать это с помощью foreach, но синтаксис ужасен. Есть ли лучший способ написания этого кода?
public class EventDtO
{
public string Id { get; set; }
public string Title { get; set; }
public string CategoryTitle { get; set; }
public DateTime DateTime { get; set; }
}
Это сложный объект, из которого я пытаюсь получить данные от
public class RootObject
{
public List<Event> Events { get; set; }
}
public class Event
{
public string Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Link { get; set; }
public List<Category> Categories { get; set; }
public List<Geometry> Geometries { get; set; }
}
public class Geometry
{
public DateTime Date { get; set; }
public string Type { get; set; }
public List<object> Coordinates { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Title { get; set; }
}
Требуемое отношение сопоставления:
EventDto.Id-> Событие .Я бы EventDto.Title-> Event.Title Event.CategoryTitle-> Category.Title Event.DateTime-> Geometry.Date
Класс Category будет содержать только одно значение, но geometry.ate может иметь несколько значений.
Итак, я хочу получить следующий вывод:
Название категории Дата
"Айсберг B42" Море и Ледяной Лед 2020-04-23T14: 24: 00Z
"Айсберг B42" Море и Ледяной Лед 2017-09-15T00: 00: 00Z
Я могу получить правильный информация, если я сделаю следующий код.
var Event = new List<EventDTO>();
foreach (var con in content.Events)
{
var data = new EventDTO
{
Title = con.Title,
Id = con.Id
};
foreach (var cat in con.Categories)
{
data.CategoriesTitle = cat.Title;
}
foreach (var geo in con.Geometries)
{
data.DateTime = geo.Date;
Event.Add(data);
}
}
Пример json
{
"id": "EONET_2881",
"title": "Iceberg B42",
"description": "",
"categories": [
{
"id": 15,
"title": "Sea and Lake Ice"
}
]
"geometries": [
{
"date": "2017-04-21T00:00:00Z",
"type": "Point",
"coordinates": [ -107.19, -74.63 ]
},
{
"date": "2017-09-15T00:00:00Z",
"type": "Point",
"coordinates": [ -107.11, -74.08 ]
}
]
}