最大值和LINQ问题分组

Bas*_*rdo 2 c# linq group-by max

我想将下面的查询分组GetSetDomainName并选择具有最大值的行GetSetKalanGun.换句话说,我试图获得具有相同DOMAINNAME的行中具有最大KALANGUN的行.

var kayitlar3 = (
    from rows in islemDetayKayitListesi
    select new
    {
        KAYITNO = rows.GetSetKayitNo,
        HESAPADI = rows.GetSetHesapAdi,
        URUNNO = rows.GetSetUrunNo,
        URUNADI = rows.GetSetUrunAdi,
        URUNMIKTAR = rows.GetSetUrunMiktar,

        ISLEMTARIHI = rows.GetSetIslemTarihi,
        HIZMETDURUMU = rows.GetSetHizmetDurumu,
        TOPLAMTUTAR = rows.GetSetToplamTutar,

        HIZMETBASLANGICTARIHI = rows.GetSetHizmetBaslangicTarihi,
        HIZMETBITISTARIHI = rows.GetSetHizmetBitisTarihi,
        KALANGUN = rows.GetSetKalanGun 
        DOMAINNAME = rows.GetSetDomainName,
        SIPARISDURUMU = rows.GetSetSiparisDurumu
    }).AsQueryable();
Run Code Online (Sandbox Code Playgroud)

这就是我得到的

KAYITNO DOMAINNAME KALANGUN
1       asdf.com      30
2       domnam.com    172
3       asdf.com      40
4       xyz.com       350
Run Code Online (Sandbox Code Playgroud)

这就是我要的

KAYITNO DOMAINNAME KALANGUN
 2       domnam.com    172
 3       asdf.com      40
 4       xyz.com       350

var islemDetayKayitListesi = new List<IslemDetayKayit>();
Run Code Online (Sandbox Code Playgroud)

islemDetayKayitListesi 充满了foreach循环,没有问题

这就是IslemDetayKayit看起来像

public class IslemDetayKayit
{
    public int GetSetKayitNo { get; set; }
    public string GetSetHesapAdi { get; set; }
    public string GetSetUrunNo { get; set; }
    public string GetSetUrunAdi { get; set; }
    public double GetSetUrunMiktar { get; set; }
    public string GetSetIslemTarihi { get; set; }
    public string GetSetHizmetDurumu { get; set; }
    public string GetSetToplamTutar { get; set; }
    public string GetSetHizmetBaslangicTarihi { get; set; }
    public string GetSetHizmetBitisTarihi { get; set; }
    public int GetSetKalanGun { get; set; }
    public string GetSetSiparisDurumu { get; set; }
    public string GetSetDomainName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我发现我的代码中还有其他一些问题,并对其进行了更正.之后,我对这个问题的所有答案都有效.感谢您帮助并教我新事物.

Ste*_*ven 5

这样就可以了:

var q =
    from item in kayitlar3
    group item by item.DOMAINNAME into g
    select g.OrderByDescending(i => i.KALANGUN).First();
Run Code Online (Sandbox Code Playgroud)

你也可以试试这个:

var q = 
    from row in islemDetayKayitListesi
    group row by row.GetSetDomainName into g
    let highest = g.OrderByDescending(r => r.GetSetKalanGun).First()
    select new
    {
        KAYITNO = highest.GetSetKayitNo,
        DOMAINNAME = g.Key,
        KALANGUN = highest.GetSetKalanGun
    };
Run Code Online (Sandbox Code Playgroud)

请注意,这将产生相同的结果.如果没有,那么您的代码存在问题,我们无法通过查看您发布的信息来查看.