Создать индивидуальный список - PullRequest
2 голосов
/ 11 февраля 2020

В моей базе данных есть информация, такая как WorkId, Name, StepId. Name представляет имя шагов, поэтому WorkId не является уникальным и может иметь несколько значений для имени. Я пытаюсь создать список или массив, который будет иметь следующий формат: [[workId1, [names1]], [workId2, [names2]],...].

Мне сложно построить его, учитывая, что подсписок состоит из значения и списка.

Этот код я использую для извлечения информации, которая мне нужна в IQueryable.

var distinctSteps = list
           .Where(s => !string.IsNullOrWhiteSpace(s.StepId))
           .Select(o => new { o.WorkId, o.StepId, o.Name })
           .Distinct();

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Основная хитрость заключается в использовании GroupBy для группировки исходного списка шагов по составному ключу (stepId, workId) с использованием кортежей значений. Затем используйте Select, чтобы получить имена из группы.

var steps = list
    .Where(s => !string.IsNullOrWhitespace(s.StepId))
    .GroupBy(s => (s.StepId, s.WorkId))
    .Select(grp => new {
        StepId = grp.Key.Item1,
        WorkId = grp.Key.Item2,
        Names = grp.Select(s => s.Name).ToList()
    });
0 голосов
/ 11 февраля 2020

Создать класс:

            List<Step> list = new List<Step>();

            var distinctSteps = list
                               .Where(s => !string.IsNullOrWhiteSpace(s.StepId))
                               .Distinct();
        }
    }
    public class Step
    {
        public string WorkId { get; set; }
        public string StepId { get; set; }
        public string Name { get; set; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...