私はこれをグーグルで検索しましたが、明らかに関連するものを見つけることができないので、ここに投稿して洞察を得てください. 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);
}
私は、successfulJobs には、Job.Status != "Failed" であるすべてのジョブが含まれることを期待しています。ただし、foreach{} を使用したコードは、Job.Status DOES が「Failed」の場合に実行されます。ここで 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]