У меня есть два объекта «псевдотип» Hash (int key, list values), которые мне нужно объединить в один на основе ключа. Например,Объединение двух коллекций в C# или JavaScript
[{1, {a, b, c}},
{2, {apple, pear}},
{3, {blue, red}}]
и
[{2, {tomato}},
{3, {pink, red}},
{4, {x, y, z}}]
В результате, что мне нужно:
[{1, {a, b, c}},
{2, {apple, pear, tomato}},
{3, {blue, red, pink, red}},
{4, {x, y, z}}]
(JSON-подобный формат для удобства чтения)
я могу сделать это сервер (C#) или на клиенте (Javascript/Angular). Есть ли тип агрегата в C#, который имеет метод, который бы это сделал? Или, может быть, какое-то мастерское выражение LINQ, которое делает то же самое?
Или лучший способ иметь их как Hashtable<int, List<object>>
, и присоединиться к ним «вручную»?
UPDATE: На основе ниже ответ, это лучший способ, чтобы задать вопрос:
Dictionary<int, string[]> Dict1 = new Dictionary<int, string[]>();
Dict1.Add(1, new string[] { "a", "b", "c" });
Dict1.Add(2, new string[] { "apple", "pear" });
Dict1.Add(3, new string[] { "blue", "red" });
Dictionary<int, string[]> Dict2 = new Dictionary<int, string[]>();
Dict2.Add(2, new string[] { "tomato" });
Dict2.Add(3, new string[] { "pink", "red" });
Dict2.Add(4, new string[] { "x", "y", "z" });
foreach (var item in Dict2) {
if (Dict1.ContainsKey(item.Key)) {
Dict1[item.Key] = Dict1[item.Key].Concat(item.Value).ToArray();
} else {
Dict1.Add(item.Key, item.Value);
}
}
Есть ли какой-то тип Collection, который позволил бы мне присоединиться к двум объектам, вместо того, чтобы идти через петлю?
Что вы имеете в виду ' {a, b, c} '? Должен ли он быть массивом '[a, b, c]'? Или вы имеете в виду объект a {a: somevalue, b: somevalue, c: somevalue} –
Да, я должен был бы поставить [] (я вырезал и вставил из 'object [] x = новый объект [] {a, b, c} '. Но я могу сделать это в любом случае, если есть ограничения ... – Felix