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
所以我想在这里做的是:
- 从 EURReporteds 获取记录
WHERE 记录未被处理
并且 RecordProcessingCount 小于 11
- 检查此登录用户是否已经处理了该记录
获取 CurrentUser 所在的 ProcessingResults 记录
并且 EURReporteds 的 ID 也存在
- 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();
我猜这是一个 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
所以我想在这里做的是:
- 从 EURReporteds 获取记录 WHERE 记录未被处理 并且 RecordProcessingCount 小于 11
- 检查此登录用户是否已经处理了该记录 获取 CurrentUser 所在的 ProcessingResults 记录 并且 EURReporteds 的 ID 也存在
- 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();