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

C# 错误:System.Collections.Generic.List<;匿名类型#1>;,c#,linq,C#,Linq,我发现了错误。以下是我的功能: public List<PlainBrgMetric> GetPlainBrgMetricProgram(long programLOBID) { var query = _context.metrics.Join(_context.universals, m => m.metricID,

我发现了错误。以下是我的功能:

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;
}
public List GetPlainBrgMetricProgram(长programLOBID)
{
var query=\u context.metrics.Join(\u context.universals,
m=>m.metricID,
u=>u.orderByAsc,
(公制,通用)=>新
{
metric.metricID,
metric.programLOBID,
米制标签,
universal.groupValue1
}).ToList();
返回查询;
}

这是预期的行为,因为:

(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
                       }
否则必须使用这四个属性声明另一个类型,并更改方法的签名和上面为每个联接结果创建的类型


我没有提到
动态
对象的替代方法,因为我从您的代码中假设您想要返回一个强类型对象的集合。

要解决这个问题,您必须返回一个
纯brgmetric
列表,您返回的是一个匿名对象列表

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

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;
}
public List GetPlainBrgMetricProgram(长programLOBID)
{
var query=\u context.metrics.Join(\u context.universals,
m=>m.metricID,
u=>u.orderByAsc,
(公制,通用)=>新的纯brgmetric
{
//填充对象属性
...
}).ToList();
返回查询;
}

“我收到了错误”-什么错误?(请重新格式化您的代码以使其更具可读性…)不过,基本上,当您打算返回
列表时,您正在尝试返回匿名类型对象的列表。你是说
new-PlainBrgMetric{…}
而不是
new{…}
maybe?还是返回列表