LINQ Group By或与OrderBy一起加入

时间:2017-08-04 11:49:28

标签: entity-framework linq group-by

我有两张桌子

1)BankAccount - >字段(BankAccountID,名称) 2)BnkTransaction - >字段(ID,金额,TransactionType,Total,BankId)FK(BankId)

这是两张桌子的图片 Database tables

我要做的是:我需要姓名,金额,信用卡或借记卡(交易类型),总计。 结果应该通过使用Entity Framework LINQ

按名称分组

Output

这是我尝试的代码,但我不确定如何使用group by获得所需的输出?如果是,那怎么样?

 var joinResult = Entity.BnkTransactions
 .Include("BankAccounts")
 .Select(x => new
 {
 Name = x.BankAccount.Name,
 Amount = x.Amount,
 Credit = x.TransType == 1 ? x.TransType : 0,
 DEBIT = x.TransType == 2 ? x.TransType : 0,
 Total = x.Total
                             }).OrderBy(x => x.Name).ToList();

            foreach (var item in joinResult)
            {
                string credit = item.Credit == 1 ? "Credit" : "---";
                string Debit = item.DEBIT == 2 ? "Debit" : "---";
                Console.WriteLine("Name:-{0} Amount: {1} Credit: {2} DEBIT: {3} 
    Total: {4}", item.Name, item.Amount, credit, Debit,item.Total );
            }

请帮助我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式执行此操作:

(未经测试)

 var joinResult = Entity.BnkTransactions
 .Include("BankAccounts")
 .GroupBy(x => x.BankAccount.Name, (key, g) => new 
 {
     Name = key,
     Transactions = g.ToList()
 }).OrderBy(x => x.Name).ToList();

这应该会为您提供一个匿名类型,其中包含一个名称和附加到其上的事务列表。

看看你是否可以遍历它以输出你需要的结果。