У меня есть две таблицы A и B. Объект домена получает большую часть своих данных из A и некоторую агрегацию из B.
Например:
Table A ( id, name );
Table B ( id_A, quantity );
class A {
public int id { set; get; }
public string name { set; get; }
}
class B {
public int id_A { set; get; }
public int quantity { set; get; }
}
var result =
from a in A join b in B on a.id equals b.id_A
group b by b.id_A into g
select new {
Name = a.name,
Total = g.Sum( b => b.quantity )
};
Вместо создания анонимного типа я хотел бы добавить свойство к объекту домена A с именем TotalQuantity и заполнить его g.Sum (b => b.quantity). Я также хотел бы превратить результат в IEnumerable вместо var.
Моя первая ставка была
class A {
public int id { set; get; }
public string name { set; get; }
public int TotalQuantity { set; get; }
}
IEnumerable<A> result =
from a in A join b in B on a.id equals b.id_A
group b by b.id_A into g
select new A {
name = a.name,
TotalQuantity = g.Sum( b => b.quantity )
};
Эта операция не поддерживается средой выполнения:
System.NotSupportedException: Explicit construction of entity type 'Data.A' in query is not allowed.
Обратите внимание, что домены A и B не содержат ссылок друг на друга. Их отношения явно не используются в приложении, поэтому я решил не моделировать его.
Как я могу аккуратно заполнить список A, не просматривая данные, хранящиеся в экземплярах анонимного класса?