Linq 根据另一个表中的值选择数据

本文关键字:选择 数据 另一个 Linq | 更新日期: 2023-09-27 18:35:03

我有下面列出的linq语句,我想根据另一个表中的值限制一个表中的记录。这是我拥有的代码:

using (context = new DocEntityConnection())
{
   var Docs = context.tbDocsDetails.Where(md => md.IsCurrentDetails && md.tbDoc.StatusID == 9).ToList(); 
   this.approves = context.tbDocApproves.ToList().Where(a => Docs.Select(x => x.DocID).ToList().Contains(a.DocID)).ToList();
   return Docs.Select(md => GetDataItem(md)).ToList();
}

还有一个名为 tbDocStatus 的表,它也有一个DocId字段我只想从tbDocDetails返回tbDocdetails.DocId = tbDocStatus.DocIdtbDocStatus.StatusId = 4的记录。

我将如何将其添加到上面显示的代码中?

Linq 根据另一个表中的值选择数据

你需要的是一个join

var Docs = from docDetail in context.tbDocsDetails
           join docStatus in context.tbDocStatus
           on docDetail.DocId = docStatus.DocId
           where docStatus.StatusId == 4 
           select docDetail;
using (context = new DocEntityConnection())
{
var Docs = context.tbDocsDetails.Where(md => md.IsCurrentDetails && md.tbDoc.StatusID ==  9).ToList(); 
var DocsFiltered = from d in Docs
               join docStatus in context.tbDocStatus
               on d.DocId equals docStatus.DocId
               where docStatus.StatusId = 4
               select d
this.approves = context.tbDocApproves.ToList().Where(a => Docs.Select(x =>       x.DocID).ToList().Contains(a.DocID)).ToList();
return DocsFiltered.Select(md => GetDataItem(md)).ToList();
}