2011-12-05 3 views
1

나는이, 잘 작동 Count 속성을 제외하고, 그냥 그룹 수의 수를주고있다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 
    } 

기업이 LINQ있다. 나는 각 텐더 카운트를 찾는 법을 모른다.

+0

정확히 집계 하시겠습니까? – Magnus

+0

Tenders는 현금, 카드, 수표와 같습니다. 위의 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(); 
}