Linq实体连续两次使用where子句

时间:2013-10-09 18:36:44

标签: linq entity-framework

我有一些代码,我在这里应用“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”的结果不应该吗?

1 个答案:

答案 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);需要将结果分配给变量(或枚举)才能看到实际,过滤结果。