我有以下的BL方法为什么会发生这种情况的IEnumerable与列表
public static void SomeMethod (List<SomeClass> group)
{
IEnumerable<SomeClass> groupWithFalse =(from SomeClass gr in group
where gr.SomeProp== false
select gr);
foreach (SomeClass grFalse in groupWithFalse)
{
grFalse.Save();
}
if (groupWithFalse.Any())
{
// do some stuff
}
}
保存dl时的模拟实现(因为它在很多单元测试使用,不能被更改)是:
public void Save()
{
group.SomeProp = true;
}
如果我尝试单元测试流的最后一个语句,例如,如果(groupWithFalse.Any())
语句失败,显然没有更多的元素将该属性设置为false。 如果我在业务逻辑改变代码:
public static void SomeMethod (List<SomeClass> group)
{
List<SomeClass> groupWithFalse = new List<SomeClass>();
foreach (var g in group)
{
if (g.SomeProp == false)
groupWithFalse.Add(g);
}
foreach (SomeClass grFalse in groupWithFalse)
{
grFalse.Save();
}
if (groupWithFalse.Any())
{
// do some stuff
}
}
条件语句if (groupWithFalse.Any())
没有单元测试失败。为什么会发生?谢谢
Google'linq lazy evaluation' – 2010-12-20 20:19:04