我正在与一位同事一起工作,我们正在尝试使用 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;
基本上它的意思是只返回我们最高的 AccountIds,其中有多个匹配的 ResourceName。到目前为止,我们已经得到了这个......
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