私は同僚と協力しており、LinqToEntities(Entity Framework v4.0)を使用して次のSQLクエリを再現しようとしています。
SELECT t1.*
FROM [dbo].LocaleStringResource AS t1
LEFT OUTER JOIN [dbo].LocaleStringResource AS t2
ON (t1.ResourceName = t2.ResourceName AND t1.AccountId < t2.AccountId)
WHERE t2.ResourceName IS NULL;
基本的には、一致するResourceNameが複数ある場合にのみ最高のAccountIdを返すと言っています。これまでにこれを持っています...
localeStringResource = from e1 in localeStringResource
join e2 in localeStringResource
on new { e1.ResourceName, e1.AccountId } equals new { e2.ResourceName, e2.AccountId }
where e2.ResourceName == null
select e1;
しかし、LEFT OUTER JOIN内で(<)未満の同等物を達成する方法を理解できないようです。
ON (t1.ResourceName = t2.ResourceName AND t1.AccountId < t2.AccountId)
これが可能かどうか、または間違った木を吠えているかどうかを誰かに教えてもらえますか?同等のLinqToEntitiesクエリの作成が容易になることを期待して、最初のクエリをできるだけ単純にすることを試みました。
ノート:
AccountId
ユニークではありません。テーブルにIdentity
Id
列がありLocalResourceString
ます。ただし、との両方に一意の制約がAccountId
ありますResourceName