internal static object SelectDonationStatByDate(int endUserID, DateTime startDate, DateTime endDate)
{
GoodTreeDataContext db = new GoodTreeDataContext();
IList<DonationStat> donationStats = new List<DonationStat>();
DonationStat donationStat = null;
var q = from p in db.Donation
where p.EndUserID == endUserID
group p by p.DonationCategory into g
select new
{
DonationCategory = g.Key,
TotalAmount = g.Where(i => Convert.ToDateTime(i.Date) >= startDate & Convert.ToDateTime(i.Date) <= endDate).Sum(d => d.Amount) == null ? 0 : g.Where(i => Convert.ToDateTime(i.Date) >= startDate & Convert.ToDateTime(i.Date) <= endDate).Sum(d => d.Amount)
};
int j = 1;
foreach (var item in q)
{
donationStat = new DonationStat();
donationStat.DonationCategory = item.DonationCategory;
donationStat.TotalAmount = item.TotalAmount;
donationStat.StartDate = startDate;
donationStat.EndDate = endDate;
donationStat.ID = j;
donationStats.Add(donationStat);
j++;
}
return donationStats;
}
internal static object SelectDonationStatByDate(int endUserID, DateTime startDate, DateTime endDate)
{
GoodTreeDataContext db = new GoodTreeDataContext();
IList<DonationStat> donationStats = new List<DonationStat>();
DonationStat donationStat = null;
var q = from p in db.Donation
group p by p.DonationCategory into g
select new
{
DonationCategory = g.Key,
TotalAmount = g.Where(i => Convert.ToDateTime(i.Date) >= startDate & i.EndUserID == endUserID & Convert.ToDateTime(i.Date) <= endDate).Sum(d => d.Amount) == null ? 0 : g.Where(i => Convert.ToDateTime(i.Date) >= startDate & Convert.ToDateTime(i.Date) <= endDate).Sum(d => d.Amount)
};
int j = 1;
foreach (var item in q)
{
donationStat = new DonationStat();
donationStat.DonationCategory = item.DonationCategory;
donationStat.TotalAmount = item.TotalAmount;
donationStat.StartDate = startDate;
donationStat.EndDate = endDate;
donationStat.ID = j;
donationStats.Add(donationStat);
j++;
}
return donationStats;
}
两种语句的结果有所不同,更确切的说第一种语句才能得出正确的结果。