1

我遇到了一个奇怪的情况。当我尝试使用 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。

谢谢。

4

1 回答 1

2

lambda 函数捕获变量,因此在searchGuid您执行查询时searchGuidis new Guid(condition[1]),因此您的查询相当于

searchItem.Where(x => x.SiteId == new Guid(condition[1]))
          .Where(x => x.FunctionTypeId == new Guid(condition[1]))

这不是你想要的。

您自己找到了解决方案:使用第二个变量(或仅内联它)。

于 2013-04-11T09:33:50.267 回答