Мне поручили рефакторинг некоторого кода, чтобы он был изменен с анонимного типа на четко определенный тип. Однако этот анонимный тип определен внутри выражения лямбда, и я не слишком уверен, как его настроить (я очень новичок в использовании лямбда).Рефакторинг от анонимного типа до определенного типа
Вот логика с анонимного типа:
var groupedData = exportData.GroupBy(x => x.Key.MetricInstance.EntityID)
.Select(grp => new
{
k = grp.Key,
v = grp.Select(x => new
{
trm = x.Key,
tsd = x.Value
})
.ToList()})
.ToList();
Мишень в вопросе К- и V переменных соответственно. k - это int, а v - словарь. Я создал новый класс для хранения этих данных:
public class EntityMetricData
{
public int entityID { get; set; }
public Dictionary<TRInfo, List<TimeData>> entityMetrics { get; set; }
}
Я хотел бы хранить значение к внутри поля EntityId и значение V внутри словаря, как я могу идти об этом? Я пытался что-то вроде этого, но он не компилируется:
var grouping = csvData.GroupBy(x => x.Key.MetricInstance.EntityID)
.Select(grp => new EntityMetricData emd
{
emd.entityID = grp.Key,
emd.entityMetrics = grp.Select(x => new
{
trm = x.Key,
tsd = x.Value
})
.ToList() })
.ToList();
Я получаю сообщение об ошибке, что «GRP не существует в текущем контексте».
Remove 'emd' везде – adrianm
Что такое' 'TRInfo' и TimeData'? У ваших исходных данных был только список ключей/значений для 'entityMetrics', но рефакторированный изменяет его на' Словарь> '- там нет очевидной связи –
Jamiec