Невозможно собрать результат моего запроса LINQ в пользовательскую модель - PullRequest
0 голосов
/ 31 марта 2020

У меня есть класс с именем Donut

 public class Donut
{
    public string Name { get; set; }
    public int Y { get; set; }
}

Теперь у меня есть запрос LINQ (Union) ...

List<Donut> myData = (from items in db.form1_tbl_pop
                              select new
                              {
                                  Name = "Urban",
                                  Y = Convert.ToInt32(db.form1_tbl_pop.Sum(a => a.u))
                              })
                            .Union(from items in db.form1_tbl_pop
                                   select new
                                   {
                                       Name = "Rural",
                                       Y = Convert.ToInt32(db.form1_tbl_pop.Sum(a => a.r))
                                   }
                ).ToList();

Я хочу собрать результат запроса в список типа Donut, но система выдает следующее исключение.

Cannot implicitly convert type 'System.Collections.Generic.List<<anonymous type: string Name, int Y>>' to 'System.Collections.Generic.List<DummyApp.Models.Donut>

Пожалуйста, дайте мне знать, что не так с этим кодом.

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Проблема в том, что в ваших select заявлениях вы создаете новые анонимные объекты, вам нужно создать новые Donut объекты:

List < Donut > myData = (from items in db.form1_tbl_pop select new Donut() {
  Name = "Urban",
   Y = Convert.ToInt32(db.form1_tbl_pop.Sum(a => a.u))
 })
 .Union(from items in db.form1_tbl_pop select new Donut(){
  Name = "Rural",
   Y = Convert.ToInt32(db.form1_tbl_pop.Sum(a => a.r))
 }).ToList();
1 голос
/ 31 марта 2020

Вы должны написать не просто select new, а select new Donut{...}. В случае просто select new do tnet среда выполнения создает новый анонимный тип anonymous type: string Name, int Y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...