C# LINQ,如何使用“获取最大ID”;其中;条件
我已经搜索了堆栈溢出,但只找到了max-ID的示例,我想找到一些特定条件下的max-ID。像这样的C# LINQ,如何使用“获取最大ID”;其中;条件,c#,linq,C#,Linq,我已经搜索了堆栈溢出,但只找到了max-ID的示例,我想找到一些特定条件下的max-ID。像这样的 var nRow = from p in ctx.FormControls . where p.FormObjectsId == FormID . select Max(p.Id); 怎么做 something.Where(t => t.something> 0).Max(w => w.other); 甚至是最大的在哪里 甚至最大
var nRow = from p in ctx.FormControls
. where p.FormObjectsId == FormID
. select Max(p.Id);
怎么做
something.Where(t => t.something> 0).Max(w => w.other);
甚至是最大的在哪里
甚至最大的where您可以这样做:
var max = ctx.FormControls.Where(r => r.FormObjectsID == FormID)
.Max(r => r.Id);
使用查询表达式,您可以执行以下操作:
var nRow = (from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.Id).Max();
你可以这样做:
var max = ctx.FormControls.Where(r => r.FormObjectsID == FormID)
.Max(r => r.Id);
使用查询表达式,您可以执行以下操作:
var nRow = (from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.Id).Max();
只需按ID降序,自然会得到最大ID
var nRow = (from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.ID).OrderByDescending(x => x.p.ID);
只需按ID降序,自然会得到最大ID
var nRow = (from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.ID).OrderByDescending(x => x.p.ID);
查询语法:
var nRow = (from p in ctx.FormControls where p.FormObjectsId == FormID select p.Id).Max();
查询语法:
var nRow = (from p in ctx.FormControls where p.FormObjectsId == FormID select p.Id).Max();
如果您真的喜欢查询表达式,可以表示“过滤器和投影”,然后使用
Max
扩展方法:
var query = from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.ID;
var maxID = query.Max();
如果需要,可以不使用中间变量,但我发现当需要将查询表达式放在括号中时,它们会变得丑陋
我个人会使用的重载允许您内联指定投影,但是。。。在这一点上,使用查询表达式表单没有任何好处-只需一直使用扩展方法和lambda表达式即可:
var maxID = ctx.FormControls
.Where(p => p.FormObjectsId == FormID)
.Max(p => p.ID);
不要忘记,所有这些都使用延迟执行,直到调用
Max
调用(使用立即执行)-因此,例如,如果这是针对LINQ to SQL或实体框架执行的,则整个查询将转换为SQL。如果您真的喜欢查询表达式,可以表示“过滤器和投影”然后使用Max
扩展方法:
var query = from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.ID;
var maxID = query.Max();
如果需要,可以不使用中间变量,但我发现当需要将查询表达式放在括号中时,它们会变得丑陋
我个人会使用的重载允许您内联指定投影,但是。。。在这一点上,使用查询表达式表单没有任何好处-只需一直使用扩展方法和lambda表达式即可:
var maxID = ctx.FormControls
.Where(p => p.FormObjectsId == FormID)
.Max(p => p.ID);
不要忘记,所有这些都使用延迟执行,直到调用Max
调用(使用立即执行)-因此,例如,如果这是针对LINQ to SQL或实体框架执行的,则整个查询将转换为SQL