EF6 获取记录,其中来自两个不同表的信息等于 x

EF6 Get Record where info from two different tables equal x

我猜这是一个 JOIN 问题 - 我还是不明白。 但如果 Where 子句正确并且另一个 table 上的 Where 子句不正确,我必须从 EUReporteds 获取记录。

我用的编码实在是太可怕了

do
  {
  // Get the next Unprocessed.
  if (skip == 0)
     eur = de.EUReporteds.Where(r => r.Processed == false && r.ReportProcessingCount < 11).FirstOrDefault();
  else
     eur = de.EUReporteds.Where(r => r.Processed == false && r.ReportProcessingCount < 11).OrderBy(ob => ob.id).Skip(skip).FirstOrDefault();
     // Have we personally already done this?
     pr = de.ProcessingResults.Where(p => p.UserId == CurrentUser.UserId && p.id == eur.id).FirstOrDefault();         
     skip++;
} while (pr != null || eur == null); // If so repeat

所以我想在这里做的是:

  1. 从 EURReporteds 获取记录 WHERE 记录未被处理 并且 RecordProcessingCount 小于 11
  2. 检查此登录用户是否已经处理了该记录 获取 CurrentUser 所在的 ProcessingResults 记录 并且 EURReporteds 的 ID 也存在
  3. IF ProcessingResults Record Exists 那么我们已经找到了这条记录,直到找不到ProcessingResults记录。

有人可以告诉我如何正确地写这个吗?

试试这个(使用 linq):

var firstUnprocessedRecord = (from eur in de.EUReporteds 
                             where !eur.Processed && eur.ReportProcessingCount < 11 
                             && !(de.ProcessingResults.Any(o=>o.UserId == CurrentUser.UserId && o.id == eur.id))
                             orderby eur.id
                             select eur).FirstOrDefault();