如何在 c# linq 中使用交叉选项卡查询

本文关键字:选项 查询 linq | 更新日期: 2023-09-27 18:31:38

var TatalFeeCollectionDetail = new List<lcclsTotalFeeCollectionDetail>();
TatalFeeCollectionDetail = (from t in .......
                            group t by new { t.MonthName,t.FeeParticularName }                                        
                                into grp                                           
                                select new lcclsTotalFeeCollectionDetail                                           
                                {
                                    Month = grp.Key.MonthName,
                                    Particular = grp.First().FeeParticularLedgerName,
                                    Amount = grp.Sum(t => t.Amount),
                                }).ToList();
dgvTotalFeeCollectionDetail.DataSource = TatalFeeCollectionDetail;

我的结果是这个......

    Month   particular Amount   
    April       b      1    
    April       c      2    
    April       d      1    
    April       e      2
    April       f      1

我想像这样转换它,任何1可以帮助我......我搜索它,但不明白该怎么做....

Month   b   c   d   e   f   Total Amount
April   1   2   1   2   1       7

提前感谢

如何在 c# linq 中使用交叉选项卡查询

你不能。这意味着创建一个具有可变数量的属性的匿名类型,这在强类型的 C# 中是不可能的。

您当然可以做的是将"特定"值存储在字典中并获得类似

Month     particular                                  Total
April     {{b, 1}, {c, 2}, {d, 1}, {e, 2}, {f, 1}}    7

了将近九年:您可以尝试组加入组依据

string[] particulars = TatalFeeCollectionDetail.Select(x => x.FeeParticularName ).Distinct().ToArray();
var crossTabbedData=TatalFeeCollectionDetail.GroupBy(TFCD => TFCD.Month).Select(TFCD => new {Month=TFCD.Key,RowData=particulars.GroupJoin(TFCD, p => p, t => t.FeeParticularName, (p, t) => t.Count() == 0 ? 0 : t.Sum(fn => fn.Amount)).ToList()}).ToList();

应该产生您想要的东西,但可能没有列标题。