【问题标题】:How to get row with bigger index using linq如何使用 linq 获取具有更大索引的行
【发布时间】: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。

标签: c# asp.net .net linq


【解决方案1】:

LINQ to Entities(和 SQL)不support所有 LINQ 方法!

替换

manager.Table2.Last(...).id

manager.Table2.OrderByDescending(...).FirstOrDefault()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多