LINQ在foreach循环中存在的问题
代码如下
         List<string> table = new List<string>();
         table.Add("a");
         table.Add("b");
         table.Add("c");
         table.Add("aa");
         table.Add("bb");
         table.Add("cc");
         table.Add("aabb");
         table.Add("aacc");
         table.Add("bbcc");
         table.Add("aabbcc");
         string[] keys = new string[] { "a", "b", "c" };
         IEnumerable<string> sql = table;
         foreach (string key in keys)
         {
             sql = sql.Where(s => s.Contains(key));
         }
         int count = sql.Count();
我想要的结果应该是count为1,找到的那个字符串是aabbcc
但是实际结果是5,返回的是c, cc, aacc, bbcc, aabbcc, 也就是只有最后一个条件满足了
我调试了一下发现,在第3次进入foreach循环体时,sql仍然还有10个对象,似乎前2次的WHERE都没有生效
然后我将foreach换成了
for (int i = 0; i < keys.Length; i++)
{
         string key = keys[i];
          sql = sql.Where(s => s.Contains(key));
}
结果就是 count为1了,正确了
谁知道这是为什么吗
------解决方案--------------------
用Visual Studio 11。
参考:http://topic.csdn.net/u/20120325/21/4617ac01-b6dc-40b5-ab05-df7039ea4d5a.html