c# - max 和 group by 问题与 LINQ

标签 c# linq group-by max

我想按 GetSetDomainName 对以下查询进行分组,并选择具有最大值的行 GetSetKalanGun。换句话说,我试图获取具有最大值的行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();

这是我得到的

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

这就是我想要的

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

var islemDetayKayitListesi = new List<IslemDetayKayit>();

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; }
}

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

最佳答案

这样就可以了:

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

你也可以试试这个:

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
    };

请注意,这会产生相同的结果。如果没有,则说明您的代码存在问题,我们无法通过查看您发布的信息发现该问题。

关于c# - max 和 group by 问题与 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6253619/

相关文章:

c# - 在 asp mvc 4 中发送带有空字段的 @html.beginform 时处理异常

c# - 碰撞时播放随机声音片段 (Unity)

c# - LINQ 和 Entity Framework - 避免子查询

mysql - 根据最高时间戳选择每个主机名的利用率百分比

algorithm - 这种算法有名称吗?

c# - 每次加倍带来不同的值(value)

c# - 使用 linq 按父级对对象列表进行分组以输出子元素

c# - LINQ:如何强制使用基于值的引用?

R根据时间差分组

c# - 如何在 C# 中识别黑色或深色图像?