如何根据linq中的返回结果返回额外的“空白”行?

问题描述 投票:1回答:1

有没有办法结合以下两个linqs?我尝试过使用Union方法

dim result = query2.Union(query3).ToList() 

但我得到错误

无法转换类型为'WhereSelectEnumerableIterator2[VB$AnonymousType_43的对象[System.Object,System.Object,System.Collections.Generic.IEnumerable`

我只想在query2中的每个返回行都有一个额外的空行,所以如果查询2返回两行,那么应该有两个空白行,我尝试在union2上添加另一个select with union但我收到错误消息。

Dim query2 = (From e In dsSummary.Tables(0).AsEnumerable()
              Group e By
                  DistNum = e("DistNum"),
                  DistName = e("DistName")
              Into Group
              Select New With {
                  .DistNum = DistNum,
                  .DistName = DistName,
                  .EventName = "Distributor Number Total",
                  .DiscountTotal = Group.Sum(Function(x) x.Field(Of Decimal)("DiscountTotal")).ToString("C2"),
                  .NetTotal = Group.Sum(Function(x) x.Field(Of Decimal)("NetTotal")).ToString("C2"),
                  .SummaryRow = "Y"
              })

Dim query3 = (From e In dsSummary.Tables(0).AsEnumerable()
            Group e By
                DistNum = e("DistNum"),
                DistName = e("DistName")
            Into Group
            Select New With {
                .DistNum = DistNum,
                .DistName = "",
                .EventName = "Distributor Number Total",
                .DiscountTotal = 0.ToString("C2"),
                .NetTotal = 0.ToString("C2"),
                .SummaryRow = "Z"
            })
.net vb.net linq
1个回答
2
投票

如果您只想在末尾添加“空行”,则查询中的每一行都有一个:

Dim emptyRows = From x In query2
                Select New With {.DistNum = "", .DistName = "", .EventName = "", .DiscountTotal = "", .NetTotal = "", .SummaryRow = ""}
Dim resultList = query2.Concat(emptyRows).ToList()

如果你想要它们不添加到最后但是使用SummaryRow进行排序,请将OrderBy放在ToList()之前。

© www.soinside.com 2019 - 2024. All rights reserved.