У меня возникают проблемы с запросом LINQ.LINQ Query не тянет все необходимые записи
Этот запрос создает список новых объектов на основе записей из репозитория. Вот исходный запрос:
var accounts = (from a in entityRepository.Queryable<Account>()
from l in a.ExternalLogins
select new
{
a.ID,
FullName = a.FirstName + " " + a.LastName,
Status = a.Status == AccountStatus.Closed ? Enums.Status.Inactive : Enums.Status.Active,
Login = new
{
ConnectionID = l.Connection.ID,
l.Connection.ConnectionType,
l.Identity
},
a.AdminAccess,
a.Username,
a.Email
}).ToList();
Моя проблема заключается в том, что не все a
имеют a.ExternalLogins
. Запрос не вытягивает эти учетные записи из-за дополнительного из оператора from l in a.ExternalLogins
. Я попытался модифицировать запрос:
var accounts = (from a in entityRepository.Queryable<Account>()
select new
{
a.ID,
FullName = a.FirstName + " " + a.LastName,
Status = a.Status == AccountStatus.Closed ? Enums.Status.Inactive : Enums.Status.Active,
Login = (from l in a.ExternalLogins
select new
{
ConnectionID = l.Connection.ID,
l.Connection.ConnectionType,
l.Identity
}),
a.AdminAccess,
a.Username,
a.Email
}).ToList();
Но я получаю «System.Reflection.AmbiguousMatchException» исключение. От взгляда на это исключение, я предполагаю, что причина в том, что и у Account
, и у Connection
есть поле ID
.
Я направился в правильном направлении с этим? Я преследую это исключение, или мой запрос не правильный?
Прошу прощения, если это тривиально; Я новичок в запросах LINQ, и мои навыки Google не помогли мне в этот момент!
Спасибо за ответ! Это имеет смысл, но когда я это пробовал, я получаю исключение «NHibernate.Exceptions.GenericADOException», в котором говорится: «Не удалось выполнить запрос [SQL: SQL not available]» с внутренним исключением »Ссылка на объект не установлена в экземпляр объекта ". –
@GrapeJelly. Вы можете подумать о добавлении некоторых тегов 'nhibernate' к вопросу, поскольку вышеупомянутое работает в« общем »LINQ. –
@ Ивана Стивена Добавлено! Извините, я не знал, что это сыграло определенную роль в этом. –