我遇到了一个奇怪的情况。 当我尝试使用lambda搜索项目时,
searchGuid = new Guid(condition[0]);
searchItem = searchItem.Where(x => x.SiteId == searchGuid);
searchGuid = new Guid(condition[1]);
searchItem = searchItem.Where(x => x.FunctionTypeId == searchGuid);
它什么都不返回。 但是当我改为
时searchGuid = new Guid(condition[0]);
searchGuid2 = new Guid(condition[1]);
searchItem = searchItem.Where(x => x.SiteId == searchGuid &&
x.FunctionTypeId == searchGuid2);
它返回我期望的正确项目。
顺便说一下,它适用于Linq to sql。
感谢。
答案 0 :(得分:2)
lambda函数捕获 searchGuid
变量,因此在您执行查询时,searchGuid
为new Guid(condition[1])
,因此您的查询等同于< / p>
searchItem.Where(x => x.SiteId == new Guid(condition[1]))
.Where(x => x.FunctionTypeId == new Guid(condition[1]))
这不是你想要的。
您自己找到了一个解决方案:使用第二个变量(或者只是内联它)。