iamserge
@iamserge

Тип данных аналогичный таблице в C#?

В целом задачка сверх простая казалось бы, но на C# я разобраться не могу ... В целом есть у меня данные, собранные по чуть чуть, но в таблицу я их занести не могу: во первых ее вообще нет, во вторых данные не будут нужны после одного запроса. Т.е. я один раз всего их использую... Выглядит это как расписание:

id int, title string, time_action DateTime;
1, Иван Сергеевич, 20.05.2019 18:45
2, Петр Николаевич, 20.05.2019 16:45
3, Светлана Ивановна, 20.05.2019 12:30
4, Иннокентий Петров, 20.05.2019 21:15
5, Константин Алексеевич, 20.05.2019 03:25
6, Никита Валерьевич, 20.05.2019 11:08

Вот такая вот табличка получилась, то есть ранее я бы сделал "SELECT * FROM table_name ORDER BY time_action" и все. Но вот тут мне надо сделать точно то же самое, но используя массивы или иные типы данных в С# без всяких там баз данных ... Как быть? Пока нашел struct и на вид могу делать всякое разное с ним, но вот прямо такие сортировки чтобы можно было не уверен .. В целом судя по всему задачка то простая, но мой уровень в C# слишком низкий :(

Подскажите, кто такое делал, как быть?
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
@lil_Toady
Все верно, вам подойдет struct или class, чтобы описать одну запись (строку), разница между ними будет что первое - value type, не может быть null. И далее любая коллекция, даже простой массив.

Предположим что вы описали сущность так:
class Item
{
    public int Id { get; set; }
    public string Title { get; set; }
    public DateTime Time { get; set; }
}


для простоты используем List - простейший динамический список, можно добавлять, удалять и т.п.:
var timeTable = new List<Item>
{
  new Item { Id = 1, Title = "Иван Сергеевич", Time = DateTime.Parse("20.05.2019 18:45") },
  new Item { Id = 2, Title = "Петр Николаевич", Time = DateTime.Parse("20.05.2019 16:45") },
};


И теперь через Linq (using System.Linq;) можно работать с этими данным, работает на любой коллекции или массиве, внедряющих интерфейс IEnumerable, и предоставляет различные методы типа Where, Min, Max, OrderBy и т.п.
var ordered = timeTable.OrderBy(item => item.Time); // Получили IEnumerable<Item>  отсортированный по Time


P.S. Такая запись, более похожая на SQL тоже возможна, но думаю подход с методами будет все же более удобным
var ordered = from item in timeTable orderby item.Time ascending select item;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
если вам уже пришла в голову сортировка, тогда все таки массив структур или классов (как аналогов строк БД).. после чего, можете открыть для себя списки и словари C# вместо массивов

следующий уровень игры - Entity Framework, очень упрощенная работа с БД. как раз для вашего случая, возможно будет интересен вариант БД in-memory

тут все зависит от задачи. предложенные мной варианты, скорее ориентированы на энтерпрайз, а если нужно очень легковесное решение - тогда все таки просто массивы классов или структур
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы