2011-12-05 11 views
1

をカウントLINQのグループエンティティに私はこのLINQを持っているアイテム

From r In ReceiptRepository.Fetch 
Where 
    r.RECEIPTDATE >= ReportStartDate And 
    r.RECEIPTDATE <= ReportEndDate 
From p In r.RECEIPTPAYMENTs 
Group p By Tender = New With 
    { 
    .TenderType = p.PAYMENTTYPE.TENDERTYPE, 
    .TenderName = p.PAYMENTTYPE.TENDERNAME 
    } Into Group 
Select New SalesTotalCount() With 
    { 
    .Id = Tender.TenderType, 
    .Name = Tender.TenderName, 
    .Total = Group.Sum(Function(a) a.AMOUNT), 
    .Count = Group.Count 
    } 

これはそれだけのグループ数の数を与えている、カウントプロパティを除いて、正常に動作しています。私は各入札数を調べる方法を知らない

+0

正確に何をカウントしますか? – Magnus

+0

入札者は現金、カード、小切手のようなものです...上記のLINQは私に現金と1を与えます。しかし、私は実際の計数を求めています。 –

答えて

1

あなたがしようとしているもの(グループキーをカウントすることです。この場合、トランザクションのタイプです)は、次のコードがそれを行います。

public class Receipt 
{ 
    public ATender Tender { get; set; } 
} 

public class ATender 
{ 
    public string TenderType { get; set;} 
    public string TenderName { get; set;} 
} 

void Main() 
{ 
    IEnumerable<Receipt> ReceiptPayments= new [] { 
     new Receipt { Tender=new ATender {TenderName="1tender", TenderType="1"}}, 
     new Receipt { Tender=new ATender {TenderName="2tender", TenderType="2"}}, 
     new Receipt { Tender=new ATender {TenderName="3tender", TenderType="1"}} 
    }; 

    int result = ReceiptPayments.GroupBy(x=>x.Tender).Where(g=>g.Key.TenderType == "1").Count(); 
} 
関連する問題