2
我在LINQ查询时遇到了一些麻烦。LINQ查询不需要提取所有记录
此查询根据存储库中的条目创建新对象的列表。 这里是原始查询:
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查询的新手,我的谷歌技巧在这一点上已经失败了!
谢谢你的回复!这是完全合理的,但是当我尝试这样做时,出现异常'NHibernate.Exceptions.GenericADOException',它说“无法执行查询[SQL:SQL不可用]”,内部异常“对象引用未设置为实例的对象。“ –
@GrapeJelly你可能会考虑在这个问题中增加一些'nhibernate'标签,因为上述工作在“一般”LINQ中。 –
@Ivan Steven添加了!对不起,我不知道这是特别的因素。 –