【发布时间】:2020-11-07 01:06:38
【问题描述】:
我有两张桌子。我需要加入它,如果在第二个表中有不止一行具有相同的candidateId,那么我只需要获取最后一个(在我的示例中为id = 153)
using (DbManager manager = new DbManager())
{
var data = (from c in manager.Table1.AsNoTracking()
join cm in manager.Table2.AsNoTracking()
on c.CandidateId equals cm.CandidateId
where cm.Id == manager.Table2.Last(z => z.CandidateId == cm.CandidateId).Id
select new
{
c,
cm.ManagerINN
}).ToList();
}
我的代码返回错误:
System.NotSupportedException: 'LINQ to Entities 无法识别方法 'StaffManagement.Models.DB.CandidateManager Last[CandidateManager](System.Linq.IQueryable1[StaffManagement.Models.DB.CandidateManager], System.Linq.Expressions.Expression1[System.Func`2[StaffManagement. Models.DB.CandidateManager,System.Boolean]])' 方法,并且这个方法不能翻译成 store 表达式。'
【问题讨论】:
-
尝试使用group join并从分组结果中获取最大ID。