Rod*_*ley 2 c# linq linq-to-entities iqueryable .net-3.5
问候,我在使用Linq to Entities获得的IQueryable对象的Where子句扩展方法中使用bool操作时遇到了一些问题.第一个例子显示了使用Bool1作为我需要移动到where子句扩展方法的操作.第二个例子是改变后不起作用的.Bool1完全被忽略,不会影响结果.
例1:
var results =
from a in context.aTable1
where a.Bool1 == false && a.Bool2 == false
select new
{
Column1 = a.Column1
Bool1 = a.Bool1
Bool2 = a.Bool2
};
results.Where(l => l. Column1.Contains(fooString));
Run Code Online (Sandbox Code Playgroud)
例2:
var results =
from a in context.aTable1
where a.Bool2 == false
select new
{
Column1 = a.Column1
Bool1 = a.Bool1
Bool2 = a.Bool2
};
results.Where(l => l.Bool1 == false);
results.Where(l => l. Column1.Contains(fooString));
Run Code Online (Sandbox Code Playgroud)
这些都是简化的例子,但我希望它们能说明我想要做的事情.where扩展方法在不同的方法中,并且是我在创建原始查询时无法完成的原因.
我尝试了以下其他方式与where子句做同样的事情:
results.Where(l => !l.Bool1);
results.Where(l => l.Bool1.Equals(false));
Run Code Online (Sandbox Code Playgroud)
它们具有相同的效果,但没有任何效果.
您的第二次和第三次查询会"丢失",因为您没有将它们分配给任何内容.尝试这样的事情:
var results = from a in context.aTable1
where !a.Bool2
select new
{
Column1 = a.Column1
Bool1 = a.Bool1
Bool2 = a.Bool2
};
results = results.Where(l => !l.Bool1);
results = results.Where(l => l.Column1.Contains(fooString));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3748 次 |
| 最近记录: |