C#使用LINQ选择行的最大ID

我有一个breadcrumb表,我想返回最近插入的行。 在SQL中它将是一个MAX()函数,但不知道如何在LINQ中执行等效操作。 基本上我想选择具有最高BreadCrumbID WHERE ProjectID = 49

这是我现在的查询,它将选择所有行WHERE ProjectID = 49 。 我想选择具有最高BreadCrumbID的行。

谢谢!

码:

 using (dbPSREntities5 myEntities = new dbPSREntities5()) { var currentStatus = (from tbBreadCrumb in myEntities.tbBreadCrumbs.Where(x => x.ProjectID == 49) select new { Status = tbBreadCrumb.BreadCrumbID, }); } 

试试这个:

 using (dbPSREntities5 myEntities = new dbPSREntities5()) { var currentStatus = (from tbBreadCrumb in myEntities.tbBreadCrumbs.Where(x => x.ProjectID == myEntities.tbBreadCrumbs.Max(b=>b.ProjectId)) select new { Status = tbBreadCrumb.BreadCrumbID, }); } 

请尝试以下查询

 var currentStatus = from x in myEntities.tbBreadCrumbs where x.ProjectID == 49 orderby x.BreadCrumbID desc select x.BreadCrumbID; 

该查询的第一个结果将是最高的BreadCrumbID值,其中ProjectID为49

此查询应该为您提供最高的BreadCrumbId,其中ProjectID = 4

 using (dbPSREntities5 myEntities = new dbPSREntities5()) { var highestId = myEntities.tbBreadCrumbs.Where(x => x.ProjectID == 49) .Max(x => x.BreadCrumbID); } 

您可以使用Max() linq扩展方法

 var crum = myEntities.tbBreadCrumbs.Max(d=>d.breadcrumbId) 

Var highestId = myEntities.breadcrumbs.lastOrDefault(x => x.ProjectId == 49)

试试这个,如果ProjectID = 49中没有BreadCrumb则给出0或者给出最大BreadCrumbID

 using (dbPSREntities5 myEntities = new dbPSREntities5()) { var query=myEntities.tbBreadCrumbs.Where(x => x.ProjectID == 49); var highestId = query.Any() ? query.Max(x => x.BreadCrumbID) : 0; }