2

うまく運がなくても、いくつかのデータをグループ化しようとしています。

私はデータのリストを持っています

 public class TransactionsViewModel
{
    public string BusinessName { get; set; }
    public string Description { get; set; }
    public int TransactionTypeId { get; set; }
    public string TransactionType { get; set; }

    [Display(Name = "Transaction Amount")]
    public decimal TransactionAmount { get; set; }

    [Display(Name = "Transaction Date")]
    public DateTime TransactionDateTime { get; set; }

}

これをグループ化したいので、次のようなクラスをいくつか作成しました

  public class BusinessTransaction
{
    public string Name { get; set; }
    public List<Transaction> Transactions { get; set; }
}

public class Transaction
{
    public decimal TransactionAmount { get; set; }
    public string Description { get; set; }
    public DateTime TransactionDate { get; set; }
    public string TransactionType { get; set; }

}

シンプルな BusinessName でグループ化できます

  var data = from c in transactions
                   group c by c.BusinessName
                   into business
                   select new BusinessTransaction()
                              {
                                  Name = business.Key,



                              };

TransactionDateTime.Date でトランザクションをグループ化するにはどうすればよいですか? 次のようなデータ構造をクライアントに送り返したいと思っています

BusinessName
  28-06-12
     Transaction
     Transaction
   27-06-12
     Transaction
 BusinessName
   28-06-12
      Transaction
4

1 に答える 1

1

次のようなものが欲しいと思います:

 var data = from c in transactions
            group c by c.BusinessName
            into business
            select new BusinessTransaction
            {
                Name = business.Key,
                Transactions = business.OrderBy(t => t.TransactionDateTime)
                                       .ToList()
            };

BusinessTransaction編集:現在のクラスでサポートできる構造はこれだけです。グループ化を直接サポートしたい場合は、そこに別のレベルのネストを追加する必要があります。

ただし、既存の構造を使用すると、クライアントはいつでも自分自身をグループ化できます。

foreach (var business in query)
{
    Console.WriteLine(business.Name);
    foreach (var group in business.Transactions
                                  .GroupBy(t => t.TransactionDateTime.Date))
    {
        Console.WriteLine("  {0}", group.Key);
        foreach (var transaction in group)
        {
            Console.WriteLine("    {0}", transaction.Description);
        }
    }
}
于 2012-06-27T22:02:56.280 に答える