У меня есть словарь выложенный как так:Проблема преобразования словарь с Linq
Dictionary<string, List<Series>> example = new Dictionary<string, List<Series>>();
example.Add("Meter1",new List<Series>(){ new Series{ name="Usage", data = new double[] {1,2,3}},
new Series{ name = "Demand", data= new double[]{4,5,6}}});
example.Add("Meter2", new List<Series>(){ new Series{ name="Usage", data = new double[] {1,2,3}},
new Series{ name = "Demand", data= new double[]{4,5,6}}});
Что мне нужно:
Dictionary<string, List<Series>> exampleResult = new Dictionary<string, List<Series>>();
exampleResult.Add("Usage", new List<Series>(){ new Series{ name="Meter1", data = new double[] {1,2,3}},
new Series{ name = "Meter2", data= new double[]{1,2,3}}});
exampleResult.Add("Demand", new List<Series>(){ new Series{ name="Meter1", data = new double[] {4,5,6}},
new Series{ name = "Meter2", data= new double[]{4,5,6}}});
То есть, словарь проецируется «вбок», с имя каждой серии в качестве ключа в новом словаре, с ключом старого словаря, используемого как имя серии.
Вот класс серии ...
public class Series
{
public string name { get; set; }
public double[] data { get; set; }
}
Извините, если я не высказываю эту проблему ясно, пожалуйста, задавайте любые вопросы, которые вы хотели бы, и заранее спасибо за любую помощь ...
EDITED TO ADD EXAMPLE
Звучит как своего рода транспозиции. 'Enumerable.ToLookup' может быть вам нужно :) – leppie
С другой стороны, почему бы не создать пользовательский словарь, который инкапсулирует транспонированный вид? Значение, при вставке/обновлении/удалении, вы можете изменить альтернативный вид. Если это всего лишь одноразовая процедура, решение LINQ, вероятно, будет более элегантным. – leppie
Типы словарей для меня совершенно не понятны. Короткий, но полный пример был бы очень полезен. –