【发布时间】:2017-08-11 11:51:54
【问题描述】:
我有以下 lambda 语句:
var resources = Db.Resource.Where(w => w.ResValue.Any(a => a.ApplicationFk == applicationPk) && w.CategoryFk == (categoryId ?? w.CategoryFk ) && w.IsEditable);
if (cultureIdsMissing!= null)
{
resources = resources.Where(w => w.ResValue.Any(a => cultureIdsMissing.Any(aa => aa == a.CultureFk) && a.Value == string.Empty));
}
这不是返回我想要的结果,返回的结果是:
SELECT Resource.ResourcePk, Resource.CategoryFk, Resource.Name, Resource.IsEditable, ResValue.ApplicatieFk, ResValue.CultureFk, ResValue.Value
FROM Resource
INNER JOIN ResValue ON Resource.ResourcePk = ResValue.ResourceFk
WHERE (ResValue.ApplicatieFk = 6)
AND (Resource.IsEditable = 1)
AND (ResValue.Value = '')
AND (ResValue.CultureFk = 1 OR ResValue.CultureFk = 2)
不是cultureIdsMissing 是一个同时包含数字1 和2 的列表。 我对 lambda 查询遗漏了什么或做错了什么?
【问题讨论】:
-
您的两个查询看起来一点也不相似 - SQL 查询中引用了
CategoryFk哪里?