我有一些代码,我在这里应用“where子句”:
我输入“n”作为数据库表的一个例子。
List<KeyValuePair<int, int>> n = new List<KeyValuePair<int, int>>();
n.Add(new KeyValuePair<int, int>(1,2));
n.Add(new KeyValuePair<int, int>(1,3));
n.Add(new KeyValuePair<int, int>(4,6));
n.Add(new KeyValuePair<int, int>(4,3));
n.Add(new KeyValuePair<int, int>(5,3));
var zzz = n.Where(z => z.Key == 1); // this returns "1,2" and "1,3"
然后在我的代码中的其他地方我做了这个:
zzz.Where(x => x.Value == 3); // this should return "1,3"... Instead it seems to return "4,3" and "5,3" and "1,3".
不是第二个应该只返回“1,3”???第二个Where子句,应该应用于“zzz”的结果不应该吗?
答案 0 :(得分:2)
第二个Where子句,应该应用于“zzz”的结果不应该吗?
是的,事实上确实如此。拿这个示例代码:
List<KeyValuePair<int, int>> n = new List<KeyValuePair<int, int>>();
n.Add(new KeyValuePair<int, int>(1,2));
n.Add(new KeyValuePair<int, int>(1,3));
n.Add(new KeyValuePair<int, int>(4,6));
n.Add(new KeyValuePair<int, int>(4,3));
n.Add(new KeyValuePair<int, int>(5,3));
var zzz = n.Where(z => z.Key == 1); // this returns "1,2" and "1,3"
zzz = zzz.Where(x => x.Value == 3); // this then filters to the 2nd option
foreach(var pair in zzz)
Console.WriteLine("{0}:{1}", pair.Key, pair.Value);
按预期打印1:3
。
我怀疑问题可能是您没有重新分配第二个过滤器的结果:zzz.Where(x => x.Value == 3);
需要将结果分配给变量(或枚举)才能看到实际,过滤结果。