【问题标题】:c# LinQ Update with multiple wherec# LinQ 更新多个where
【发布时间】:2016-12-07 15:30:34
【问题描述】:

我一直在使用 LinQ,我可以使用 1 个过滤器进行更新,但是当使用多个过滤器时,它会忽略其他 2 个,只检查第一个。

这是我正在使用的代码:

一个有效的地方:

Engagement_History eh = qdb.Engagement_History.First(a => (a.pdPPMCID.Equals(PPMCID));

多个不工作的地方:

Engagement_History eh = qdb.Engagement_History.First(a => ((a.pdPPMCID.Equals("1")) && (a.ehMonth.Equals("1")) && (year.Equals("2016"))));

【问题讨论】:

  • 你对不起作用的定义是什么?
  • 你只有year.Equals("2016"),这不应该是a.year.Equals("2016")(或什么)吗?这是您的问题中的错字还是您的实际代码?
  • 究竟什么是a,您不应该使用String.Compare 而不是Equal吗?
  • 此声明是否适合您:Engagement_History eh = qdb.Engagement_History.Where(a => ((a.pdPPMCID.Equals("1")) && (a.ehMonth.Equals("1")) && (a.year.Equals("2016")))).FirstOrDefault();
  • 是的,事实证明我忘记了当年的 a。谢谢@ChrisF。连续编码 7 小时开始失去理智

标签: c# sql asp.net linq


【解决方案1】:

在您的查询中,您只有

year.Equals("2016")

作为你的最后条款。

这应该是:

a.year.Equals("2016")

否则它将寻找一个名为 year 的局部变量来比较“2016”。如果该局部变量不存在,那么您应该会看到编译器错误。如果确实存在,则查询将仅在设置为“2016”时返回结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2021-09-06
    • 2012-01-08
    • 2020-11-19
    • 1970-01-01
    相关资源
    最近更新 更多