4

私はLinqを初めて使用し、顧客IDのリストとそのトランザクションの数を取得する方法を考えていました

public class Transaction
{
    public int TransactionId {get; set;}
    public int CustomerId {get; set;}   
}


public class Customer
{
    public int ID {get; set;}
    public string Name {get; set;}
    public string Surname {get; set;}
}

顧客をトランザクションに参加させる必要があると思いますが、カウントを取得する方法がよくわかりません。

    var query  =    (from c  in customers
                    join t in transactions on c.ID equals t.CustomerId
4

2 に答える 2

3
var query = transactions
                .GroupBy(t => t.CustomerId)
                    .Select (t => new { Id = t.Key, TranCount = t.Count() })
                        .ToList();

参加する必要はありません。Transactionオブジェクトに関するすべての情報があります。

ただし、顧客の名前などの追加の顧客情報が必要な場合は、参加する必要があります。その場合、次のことができます。

var query  =    (from c  in customers
                join t in transactions on c.ID equals t.CustomerId
                group c by c.ID  into grp 
                select new 
                { 
                    Id = grp.Key, 
                    Surname = grp.First().Surname, 
                    TranCount = grp.Count() 
                }).ToList();
于 2012-08-23T10:45:25.937 に答える