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?还是返回列表