如何制作组by和订购linq

本文关键字:linq by 何制作 | 更新日期: 2023-09-27 18:06:28

这是我的模型:

public partial class DEGIVREUSE_SITE 
{
    public int EVENEMENT_ID { get; set; }
    public string DEGIVREUSE_ID { get; set; }
    public string SITE_COD { get; set; }
    public string ETAT_GLOBAL { get; set; }
    public string ETAT_CARBURANT { get; set; }
    public Nullable<int> KM_CHASSIS { get; set; }
    public Nullable<int> HEURE_CHASSIS { get; set; }
    public string ETAT_FONCTIONNEMENT { get; set; }
    public Nullable<int> HEURE_GROUPE { get; set; }
    public string COMMENTAIRE { get; set; }
    public virtual DEGIVREUSE DEGIVREUSE { get; set; }
    public virtual SITE SITE { get; set; }
    public virtual EVENEMENT EVENEMENT { get; set; }
}
[DataContract]
public class InventaireDegivreuse : Evenement
{
    public InventaireDegivreuse()
        : base(-1, Global.EvenementType.InventaireDegivreuse, DateTime.MinValue)
    {
    }
    public InventaireDegivreuse(int id, DateTime date, string libelle, string societe)
        : base(id, (int)Global.EvenementType.InventaireDegivreuse, date, libelle, "", "", societe)
    {
        ListeDegivreuses = new List<EtatDegivreuse>();
    }
    [DataMember]
    public List<EtatDegivreuse> ListeDegivreuses { get; set; }
    public void AddDegivreuse(EtatDegivreuse degivreuse)
    {
        lock (ListeDegivreuses)
            ListeDegivreuses.Add(degivreuse);
    }
    public int NbDegivreuses
    {
        get
        {
            lock (ListeDegivreuses)
                return ListeDegivreuses.Count;
        }
    }
    public override void GenereLibelle()
    {
        Libelle = Properties.Resources.InventaireDegivreuse.Replace("%s", SocieteNom);
    }
}

我需要与EVENEMENT_DT_CREA订购所有事件,之后对于每个社会,我得到inventairegivreuse的第一个元素(具有最大EVENEMENT_DT_CREA的新元素),我尝试此查询,但我有一个不好的结果:

   var @eventss = GetQuery(unitOfWork).Include(entity => entity.EVENEMENT).OrderByDescending(e => e.EVENEMENT.EVENEMENT_DT_CREA).GroupBy(m => m.EVENEMENT.SOCIETE_NOM).First().ToList();

在我的解决方案,只有一个社会,我有正确的结果如下:

  public InventaireDegivreuse GetLastBySociete(IReadOnlyUnitOfWork unitOfWork, string societeName)
    {
        var @event = GetQuery(unitOfWork).Include(entity => entity.EVENEMENT).OrderByDescending(e => e.EVENEMENT.EVENEMENT_DT_CREA).FirstOrDefault(m => m.EVENEMENT.SOCIETE_NOM ==societeName);
        return DatabaseMapping.Map<DEGIVREUSE_SITE, InventaireDegivreuse>(@event);
    }

有什么想法吗?

如何制作组by和订购linq

很难决定你想要什么,但我怀疑你想要这样的东西:

var @event = GetQuery(unitOfWork)
          .Include(entity => entity.EVENEMENT)
          .GroupBy(e => e.EVENEMENT.SOCIETE_NOM)
          .Select(g => g.OrderByDescending(e => e.EVENEMENT.EVENEMENT_DT_CREA)
                        .First());