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のクエリに新しいです、そして、私のGoogleのスキルは、この時点で私に失敗しました!左の外側を行うには
は、応答をありがとう!それはまったく理にかなっていますが、私が試してみたところ、例外 "NHibernate.Exceptions.GenericADOException 'が発生しました。"インスタンス[SQL Server:SQL not available]オブジェクトの "。 –
@GrapeJelly上記の「一般的な」LINQで動作するので、いくつかの 'nhibernate'タグを質問に追加することを検討することができます。 –
@Ivan Stevenが追加されました!申し訳ありませんが、私はこれが具体的に要因となっているかどうかはわかりませんでした。 –