Я бы пошел с чем-то вроде SteadyEddi (у меня есть FundEntity), но я думаю, что вы можете выразить это точно так, как вы хотите, как это (или эквивалентный способ не LINQ, как SteadyEddi):
fund.FundEntities =
from fe in fundGroup.tFunds
select new FundEntity()
{
BackAccount = null,
CloseDate = fe.closeDate ?? new DateTime(),
Commitment = fe.commitment ?? 0,
CommitmentEndDate = fe.closeDate ?? new DateTime(),
Fund = fund,
CapitalCalls = from cc in fe.tCapitalCalls
select new CapitalCall()
{
Amount = cc.agrAmount ?? 0,
FundEntity = fundEntity
}
}
Если нет, я думаю, что в вашем отображении базы данных происходит что-то, что действительно должно быть пересмотрено в любом случае :) Плохие имена и т.д. Проблема с вашим кодом может заключаться в том, что вы сами создаете CapitalCalls, поэтому LINQ-TO-SQL может быть не в состоянии правильно декодировать дерево выражений. Но опять же, я, очевидно, не тестировал свой код, поэтому я не знаю, работает ли мой код.