我的任务是重构一些代码,以便将其从匿名类型更改为定义良好的类型。但是,这个匿名类型是在lambda表达式中定义的,我不太确定如何设置它(我对使用lambda很新)。
这里是匿名类型的逻辑:
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();
有问题的目标分别是k和v变量。 k是一个int,v是一个字典。我创建了一个新类来保存这些数据:
public class EntityMetricData
{
public int entityID { get; set; }
public Dictionary<TRInfo, List<TimeData>> entityMetrics { get; set; }
}
我想在entityID字段中存储k的值,在字典中存储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();
我收到一条错误消息,指出&#34; grp在当前环境中不存在&#34;。
答案 0 :(得分:1)
您不需要emd
变量:
var grouping = csvData
.GroupBy(x => x.Key.MetricInstance.EntityID)
.Select(grp => new EntityMetricData {
entityID = grp.Key,
entityMetrics = grp
.Select(x => new {
trm = x.Key,
tsd = x.Value })
.ToList() })
.ToList();