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>>

无法创建类型为'System.Collections.Generic.List ' 1[System.Int32]'的查询结果
        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);

ASP.. NET LINQ错误无法创建类型为'System.Collections.Generic.List

我猜你正在使用某种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")
                }
相关文章: