ASP.. NET LINQ错误无法创建类型为'System.Collections.Generic.List
本文关键字:System Collections List Generic 类型 LINQ NET 错误 创建 ASP | 更新日期: 2023-09-27 18:10:26
我试图通过Linq语句创建Dictionary<string, List<int>>
var output = (
from e in EDC.Energideklarationer_As
where MunicipalityName.Contains(e.Municipality)
group e by e.Municipality into g
select new
{
Municipality = g.Key,
listan = new List<int>()
{
g.Count(e => e.H== "El"),
g.Count(e => e.H== "Eldningsolja"),
g.Count(e => e.H== "Flis"),
g.Count(e => e.H== "Markvarmepump"),
g.Count(e => e.H== "Ved")
}
}
).ToDictionary(x => x.Municipality, x=> x.listan);
我猜你正在使用某种ORM库,EDC.Energideklarationer_As
对象是在该ORM中实现的IQueryable
。发生的情况是,这个库试图从LINQ查询生成一个对底层数据源的查询(可能是SQL查询,取决于您使用的库)。
一些表达式在一些orm中不支持-例如实体框架将不处理select new int[] { ... }
,但将处理select new List<int> { ... }
。您正在使用的库似乎不支持在查询中创建新的List。这个异常是在ToDictionary
中抛出的,因为这是结果被实例化和LINQ被翻译的地方。
尝试替换列表:
listan = new List<int>()
{
g.Count(e => e.H== "El"),
g.Count(e => e.H== "Eldningsolja"),
g.Count(e => e.H== "Flis"),
g.Count(e => e.H== "Markvarmepump"),
g.Count(e => e.H== "Ved")
}
带有另一个匿名类型:
listan = new
{
El = g.Count(e => e.H== "El"),
Eldningsolja = g.Count(e => e.H== "Eldningsolja"),
Flis = g.Count(e => e.H== "Flis"),
Markvarmepump = g.Count(e => e.H== "Markvarmepump"),
Ved = g.Count(e => e.H== "Ved")
}