我有这门课
public class Materiale
{
public string IdMateriale { get; set; }
public string GenereMateriale { get; set; }
public string Categoria { get; set; }
public string Modello { get; set; }
public string Tipo { get; set; }
public string NumSerie { get; set; }
public int Anno { get; set; }
public string DittaCostruttrice { get; set; }
public string Note { get; set; }
public List<Controllo> Controlli = new List<Controllo>();
}
public class Controllo
{
public string IdControllo { get; set; }
public DateTime DataControllo { get; set; }
public string IdMateriale { get; set; }
public string Utente { get; set; }
public string Stato { get; set; }
public string Note { get; set; }
}
我想查询过滤“Controlli”的“Materiale”列表。我需要检索“Materiale”类的所有属性和“Controllo”类的一个属性(名为“Stato”的属性)。从“Controlli”列表中,我需要具有最新“DataControllo”属性的列表。
我在 LINQ 查询中尝试此操作,但收到错误(Max
在当前上下文中不存在)
List<Materiale> m = new List<Materiale>();
List<Materiale> m2 = (from ma in m
from c in ma.Controlli
where c.DataControllo == Max(c.DataControllo)
select new
{
ma, c.Stato
}).ToList();
谁能帮帮我
最佳答案
@Christos 是正确的,这是我在查询语法中使用 let
的版本:-
List<Materiale> m2 = from m in MaterialeList
let RecentControllo = m.OrderByDescending(x => x.DataControllo)
.FirstOrDefault()
select new Materiale
{
IdMateriale = m.IdMateriale,
GenereMateriale = m.GenereMateriale,
//Similarily other properties of Materiale here
Stato = RecentControllo != null ? RecentControllo.Stato : ""
}).ToList();
关于linq - 使用类的最大值 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32984742/