VB Linq Group加入查询FAILS以降序排序结果

时间:2017-11-29 18:46:46

标签: vb.net linq

有没有人知道为什么此查询无法按降序VisitStart顺序排序结果,尽管查询中有两个OrderBy子句?

术语“ΗμΏραΕπίσκεψης”是希腊人的“VisitStart”!!

放置了两个OrderBy子句,因为我迫切需要按此VisitStart列按降序排序结果!

此外,是否可以用0(零)或""(空字符串)替换最后一列单元格中的“null”结果?

(From p In Patients
    Join v In Visits On v.Patient Equals  p 
    Join t In VisitTypes On v.VisitType Equals t
    Group Join m In Payments On m.Visit Equals v Into PaymentsGroup = Group, g = sum(Ctype(m.Ποσό, Integer?))
    Order By v.VisitStart Descending
    From pmnt In PaymentsGroup.DefaultIfEmpty()
        Where 
        v.VisitStart.Year = 2017
        Select New  With {
        .VId = v.Id,
        .PId = v.PatientId,
        .Όνομα = p.Όνομα,
        .ΗμΏραΕπίσκεψης = v.VisitStart,
        .PtFirstVisitEver = p.Added,
        .Κόστος = v.Κόστος,
        .Πληρωμές = g
        }).OrderByDescending(Function(x) x.ΗμΏραΕπίσκεψης).Distinct

请在此处找到相应的结果图片

enter image description here

1 个答案:

答案 0 :(得分:1)

Distinct方法可能会改变列表的顺序。因此,如果订单很重要,那么为了安全起见,你应该做到最后。换句话说:

x.Distinct().OrderByDescending(Function(x) x.ΗμΏραΕπίσκεψης)

而不是:

x.OrderByDescending(Function(x) x.ΗμΏραΕπίσκεψης).Distinct()