LINQ 到 EF4 查询位置子句未按预期筛选
本文关键字:筛选 子句 EF4 查询 位置 LINQ | 更新日期: 2023-09-27 18:32:19
我已经用谷歌搜索过这个,但找不到任何明显相关的东西,所以在这里发布一些见解。使用 LINQ/EF4。下面是代码片段:
private const string JOB_FAILED = "Failed";
// other code..
var successfulJobs = context.Jobs.Where(x => x.Status != JOB_FAILED);
foreach (Job successfulJob in successfulJobs)
{
context.DeleteObject(successfulJob);
}
我希望 successJobs 包含 Job.Status != "失败" 的所有作业。但是,当 Job.Status 等于"失败"时,代码 witihn foreach{} 执行。我在这里错过了一些关于 LINQ''Lambda 的基本知识吗?
编辑:根据要求生成的SQL,似乎还可以。
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Parameters] AS [Parameters],
[Extent1].[Status] AS [Status],
[Extent1].[Created] AS [Created],
[Extent1].[Modified] AS [Modified]
FROM [bws].[JobRunner_Tasks] AS [Extent1]
WHERE N'Failed' <> [Extent1].[Status]
嗯....在任何其他语言中,我可能会建议使用
x => !x.Status.equals(JOB_FAILED)
但我不认为字符串比较在 C# 中那么挑剔
我仍然会说这是一个区分大小写的问题。如果直接在 SQL 中运行查询,查询会返回什么?您能否在该表中发布数据示例?(包括"失败"状态)我知道这不是答案,但我还不能在帖子中添加评论(代表低于 50)。