Есть список вида
List<Person> people = new List<Person>();
people.Add(new Person() { Name = "Том", Id = "Id_1" });
people.Add(new Person() { Name = "Том", Id = "Id_2" });
people.Add(new Person() { Name = "Ипполит", Id = "Id_3" });
people.Add(new Person() { Name = "Евкакий", Id = "Id_4" });
people.Add(new Person() { Name = "Евкакий", Id = "Id_5" });
То есть имена могут повторяться, а Id - нет.
Хочу создать словарь типа Dictionary<string, List<string>>, чтобы у ключа был список из Id-шников. Как это можно сделать?
То есть Том:[Id_1, Id_2], Ипполит:[Id_3], Евкакий:[Id_4, Id_5]
Пробую вот так, но записывается только первый элемент
foreach (var eee in people)
{
var key = eee.Name;
if (!dictionaryElement.ContainsKey(key))
{
dictionaryElement[key] = new List<Id>();
dictionaryElement[key].Add(eee.Id);
}
}
Заранее спасибо!
if (!dictionaryElement.ContainsKey(key))
dictionaryElement[key] = new List<Id>();
dictionaryElement[key].Add(eee.Id);
Dictionary<string, string> peopleDic1
= people.GroupBy(p => p.Name)
.Select(g => new
{
Name = g.Key,
Ids = people
.Where(p => p.Name == g.Key)
.Aggregate(String.Empty,
(a, n) => a + ", " + n.Id)
})
.ToDictionary(n => n.Name, n => n.Ids.Remove(0, 2));
Dictionary<string, List<string>> peopleDic2
= people.GroupBy(p => p.Name)
.Select(g => new
{
Name = g.Key,
Ids = people
.Where(p => p.Name == g.Key)
.Aggregate(new List<string>(),
(acc, p) => { acc.Add(p.Id); return acc; })
})
.ToDictionary(n => n.Name, n => n.Ids);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости