【问题标题】:Check if a row is in a list and compare it to other rows in that table检查一行是否在列表中并将其与该表中的其他行进行比较
【发布时间】:2013-05-13 12:17:37
【问题描述】:

我正在使用 ADO.NET 查询来选择位置为 x、y 或 z 并在主管下工作的所有员工的员工 ID。

这是我正在使用的查询:

SELECT  e.Employee_OID
FROM    Employee e
WHERE   EXISTS (SELECT  1
                FROM    Employee e1 
                WHERE   e.Employee_OID = e1.Supervisor_OID
                AND     e1.Active_f = 'A')
AND     e.Location_OID IN (123, 22)
AND     e.Active_f = 'A'

我想将其转换为 LINQ 表达式,我是 LINQ 和 EF 的初学者,有人可以指导我将其写入 LINQ 吗?

这是我目前所拥有的:

var supervisors = (from employee in Employee
         where employee.location_OID == "???"  //I have ID's in a list here
         select employee.Employee_OID).Any();

【问题讨论】:

  • @All downvoters,谢谢!但是提供一个有用的链接,如this,将不胜感激。
  • @faizanjehangir 我们不在这里为您搜索。在提出问题之前,先做一些研究。
  • 如果您使用过 EF,那么本文中的问题通常是相关的并且可以识别。这个问题有正确和错误的答案,不太可能引起辩论。接近的投票是不合理的。我认为这是一个很好的问题并且有posted so on meta
  • @Andomar 感谢您的慷慨回复。但我想社区有时会充满敌意。无论如何,这些意见必须得到尊重。它阻碍了一个人学习和探索新事物的机会。

标签: c# .net linq entity-framework


【解决方案1】:

如果您使用的是 EF 4.0 或更高版本,您可以使用 Contains() 检查某个项目是否在列表中:

where yourList.Contains(employee.location_OID)

exists 子查询可以用Any() 完成:

where employee.Any(e1 => e.Employee_OID == e1.Supervisor_OID &&
                         e1.Active_f == "A")

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    相关资源
    最近更新 更多