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添加了!對不起,我不知道這是特別的因素。 –