C# 如何在C中使用LINQ Select with Max()

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); 但我不确定这是不是一个有效的查询。有

我有一个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 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将返回最高的列值,不是包含该值的对象。