如何使用LINQ中的条件重新排列选择结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用LINQ中的条件重新排列选择结果相关的知识,希望对你有一定的参考价值。

我是linq的新手我正在寻找下表的解决方案。这是我的桌子结构enter image description here

通过使用TransType作为条件,我想创建两个新列CreditDebit,并希望根据TransType条件显示数据。

喜欢以下截图。 enter image description here

你能否根据2截图建议我LINQ select查询获取结果。谢谢。

答案

要获得两个额外的列,您可以创建自己的自定义类或动态生成匿名类(您始终可以通过dynamic数据类型将其传递到任何位置)。代码显示了原理。在这种情况下,我使用匿名类,所以我必须重复原始对象中的所有字段并添加两个额外的列:

static void Main(string[] args)
{
    var list = new List<MyObj>
    {
        new MyObj { TransType = "Credit", PaymentMethod = 1, Amount = 1000 },
        new MyObj { TransType = "Debit", PaymentMethod = 2, Amount = 2000 },
        new MyObj { TransType = "Debit", PaymentMethod = 1, Amount = 4000 },
        new MyObj { TransType = "Credit", PaymentMethod = 3, Amount = 3000 }
    };

    var filtered = from o in list
                   where o.TransType == "Credit"
                   select new
                   {
                      o.TransType,
                      o.PaymentMethod,
                      o.Amount,
                      Credit = "<VALUE>",
                      Debit = "<VALUE>"
                   };
}
class MyObj
{
    public string TransType { get; set; }
    public int PaymentMethod { get; set; }
    public int Amount { get; set; }
}
另一答案

谢谢你的建议。

from o in erp.CompAccTransactions
                                  where o.CompanyId == cid
                                  select new
                                     {
                                         o.TransId,
                                         o.TransDate,
                                         o.TransType,
                                         o.TransDesc,
                                         o.PaymentRef,
                                         Credit = o.TransType == "Credit" ? o.Amount : (o.TransType == "Debit" ? (decimal?)null : (decimal?)null),
                                         Debit = o.TransType == "Debit" ? o.Amount : (o.TransType == "Credit" ? (decimal?)null : (decimal?)null),
                                         o.ClearBalance

                                     });

以上是关于如何使用LINQ中的条件重新排列选择结果的主要内容,如果未能解决你的问题,请参考以下文章

Linq 常用查询操作符

如何轻松地重新排序 LINQ to SQL 设计器中的列?

linq 加入 case 条件

如何以编程方式重新排序primefaces数据表中的列

有没有办法重新排列选择结果列? [关闭]

如何重新排列 wordcount hadoop 输出结果并按值排序