C# 如何在C中使用LINQ Select with Max()
我有一个linq查询,我想根据下面的条件获取单个记录- 选择列A int,列B string 根据列A选择最大值行 我尝试了这个问题-C# 如何在C中使用LINQ Select with Max(),c#,linq,C#,Linq,我有一个linq查询,我想根据下面的条件获取单个记录- 选择列A int,列B string 根据列A选择最大值行 我尝试了这个问题- var result = this.context.Table1 .Where(x => x.Id == SomeId) .Select(s => new { s.column_A, s.column_B }) .Max(item => item.column_A); 但我不确定这是不是一个有效的查询。有
var result = this.context.Table1
.Where(x => x.Id == SomeId)
.Select(s => new {
s.column_A,
s.column_B })
.Max(item => item.column_A);
但我不确定这是不是一个有效的查询。有人能告诉我正确的方法吗。同样在这个查询之后,我想得到这两个字段的值,如下所示-
var sequence = result.column_A
var index = result.column_B
您始终可以这样做:
var result = this.context.Table1
.Where(x => x.Id == SomeId)
.OrderByDescending(x=>x.columnA)
.Select(s => new { s.column_A, s.column_B })
.FirstOrDefault();
对于Min,您可以使用.OrderBy而不是.OrderByDescending您始终可以这样做:
var result = this.context.Table1
.Where(x => x.Id == SomeId)
.OrderByDescending(x=>x.columnA)
.Select(s => new { s.column_A, s.column_B })
.FirstOrDefault();
对于Min,您可以使用.OrderBy而不是.OrderByDescending这会导致整个集合被排序,还是会被编译器优化掉?它会在应用WHERE子句后排序。这种类型的表达式几乎总是转换为简单的SELECT。。。从[表格]那里。。。ORDER BY[something]desc根据我的经验,Linq表达式在转换为SQL时通常尽可能遵循语句的顺序。因此,切换OrderBy和Where子句将导致效率低下,而将它们保持在这种顺序将按预期工作。@CaptainKenpachi,那么,你的意思是说我应该使用OrderByDescending而不是Max?这会导致整个集合被排序,还是会被编译器优化掉?它会在应用WHERE子句后排序。这种类型的表达式几乎总是被转换为简单的SELECT。。。从[表格]那里。。。ORDER BY[something]desc根据我的经验,Linq表达式在转换为SQL时通常尽可能遵循语句的顺序。因此,切换OrderBy和Where子句将导致效率低下,而保持它们的顺序将按预期工作。@CaptainKenpachi,你的意思是我应该使用OrderByDescending来代替Max吗?Max将返回最高的列值,而不是包含该值的对象。Max将返回最高的列值,不是包含该值的对象。