LinQ to Entities:Lambda在哪里

时间:2013-04-11 09:28:06

标签: linq lambda entity

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

感谢。

1 个答案:

答案 0 :(得分:2)

lambda函数捕获 searchGuid变量,因此在您执行查询时,searchGuidnew Guid(condition[1]),因此您的查询等同于< / p>

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

这不是你想要的。

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