c# - 返回与该项目相关的所有记录都具有特定条件的项目

标签 c# sql sql-server linq entity-framework

请考虑这种情况:

我有一个这样的表:

ID              City            Status
--------------------------------------
 1               1                1
 2               1                1
 3               1                1
 4               2                1
 5               2                0
 6               3                1
 7               3                1
 8               3                1
 9               3                1
 10              4                3
 11              4                1
 12              4                0

我想返回 Citis,所有与该城市相关的记录都有 Status=1如果其中一条记录有 Status<>1该城市从结果集中排除。在这种情况下,我想返回城市:1、3。

我如何使用 Sql 查询或 LINQ 查询来执行此操作?

谢谢

最佳答案

像这样的东西应该可以做到。

林克:

var citiesToExclude = context.Table
    .Where(t => t.Status != 1)
    .Select(t => t.City);
var cities = context.Table
    .Where(t => t.Status == 1)
    .Where(t => !citiesToExclude.Contains(t.City))
    .Select(t => t.City)
    .Distinct()
    .ToList();

SQL:

SELECT City
FROM [Table]
WHERE Status == 1
  AND City NOT IN (SELECT City FROM [Table] WHERE Status <> 1)
GROUP BY City

希望这对您有所帮助。

关于c# - 返回与该项目相关的所有记录都具有特定条件的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516387/

相关文章:

c# - 字符串比较长度不匹配

c# - using 语句的有效使用(MSDN 中没有)

c# - 使用 C# 从我的 Java 证书中获取公钥

mysql - 如何知道mysql中下一个自增id是什么?

php - MYSQL 中带有否定的多个 Case 语句

sql - 如何在 sql server 2008 的存储过程中使用 if 比较两个字符串?

sql - 与 SQL 数据匹配并分配身份 ID

c# - VB.NET 与 C# 在控制台应用程序结束后没有显式释放任何内容而退出 Excel 有何不同?

c# - 通过 C# 进行 Windows 桌面搜索

sql-server - 在 SQL Server 中的 Group By 中传递变量