错误:System.Collections.Generic.List<;匿名类型#1>;

本文关键字:类型 gt lt Collections Generic List 错误 System | 更新日期: 2023-09-27 18:22:28

我得到了错误。这是我的功能:

public List<PlainBrgMetric> GetPlainBrgMetricProgram(long programLOBID) 
{
    var query = _context.metrics.Join(_context.universals,
                                      m => m.metricID,
                                      u => u.orderByAsc,
                                     (metric, universal) => new 
                                     {
                                         metric.metricID,
                                         metric.programLOBID,
                                         metric.label,
                                         universal.groupValue1
                                     }).ToList();
    return query;
}

错误:System.Collections.Generic.List<;匿名类型#1>;

要修复它,必须返回一个PlainBrgMetric列表,返回的是一个匿名对象列表。

您应该按如下方式编辑代码:

public List<PlainBrgMetric> GetPlainBrgMetricProgram(long programLOBID) 
{
    var query = _context.metrics.Join(_context.universals,
                                  m => m.metricID,
                                  u => u.orderByAsc,
                                 (metric, universal) => new PlainBrgMetric
                                 {
                                     //Populate the object properties
                                     ...
                                 }).ToList();
    return query;
}

这是预期的行为,因为这里:

(metric, universal) => new 
                       {
                           metric.metricID,
                           metric.programLOBID,
                           metric.label,
                           universal.groupValue1
                       }

您创建的是匿名类型,而不是PlainBrgMetric对象。

如果PlainBrgMetric至少有四个与您创建的匿名类型属性相同的属性,您可以快速修复:

(metric, universal) => new PlainBrgMetric 
                       {
                           MetricID = metric.metricID,
                           ProgramLOBID = metric.programLOBID,
                           Label = metric.label,
                           GroupValue1 = universal.groupValue1
                       }

否则您必须使用这四个属性声明另一个类型,并更改方法的签名和您在上面为每个联接结果创建的类型。

我没有提到dynamic对象的替代方案,因为我从您的代码中假设您希望返回一个强类型对象的集合。