关于linq:无法在C#中隐式转换类型’System.Collections.Generic.List

 2020-10-04 

Cannot implicitly convert type 'System.Collections.Generic.List in C#

嗨,我是编程新手,请您帮助我:

我在" To.List()"中遇到错误
错误1无法将类型'System.Collections.Generic.List'隐式转换为'System.Collections.Generic.List

我的代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
List<IncByYrMonthModel> GroupedList = (from p in incidentsViewModel
                                       group p by new
                                       {
                                           month = p.DateClosed.Value.Month,
                                           year = p.DateClosed.Value.Year
                                       } into d
                                       select new
                                       {
                                           d.Key.month,
                                           d.Key.year,
                                           count = d.Count()
                                        }).ToList();
return GroupedList;

我的模特是:

1
2
3
4
5
6
public class IncByYrMonthModel
{
    public string Year { get; set; }
    public string Month { get; set; }
    public string Total { get; set; }
}

更新的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public List<IncByYrMonthModel> GetYrMonth2(HttpSessionStateBase session, int id, int _StrYear)
{
    List<IncidentsModel> incidentsViewModel = ViewModelService.Fetch<List<IncidentsModel>>(session, id);

    List<IncByYrMonthModel> GroupedList = (from p in incidentsViewModel
                                           group p by new
                                           {
                                               month = p.DateClosed.Value.Month,
                                               year = p.DateClosed.Value.Year
                                            } into d
                                            select new IncByYrMonthModel
                                            {
                                                Month = d.Key.month,
                                                Year = d.Key.year,
                                                Total = d.Count()
                                            });

        return GroupedList;
    }

你应该改变这个

1
select new { d.Key.month, d.Key.year, count = d.Count() }

对此

1
select new IncByYrMonthModel { Month = d.Key.month, Year = d.Key.year, Total = d.Count() }

第一种情况的问题是,您有一个匿名类型的对象序列,您尝试将其转换为IncByYrMonthModel列表,这是不可能的。


您基本上是在尝试分配匿名类型

new { d.Key.month, d.Key.year, count = d.Count() }

对你的对象。 代替选择新的{...},只需选择新的IncByYrMonthModel(){...}即可填充对象。