LINQ To SQL 中 聚合函数的使用问题
2009-04-15 16:42
453 查看
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;
}
两种语句的结果有所不同,更确切的说第一种语句才能得出正确的结果。
{
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;
}
两种语句的结果有所不同,更确切的说第一种语句才能得出正确的结果。
相关文章推荐
- 关于使用Linq to sql作为数据交互时的架构问题
- 一起谈.NET技术,使用LINQ to SQL更新数据库(上):问题重重
- 使用LINQ to SQL更新数据库(上):问题重重
- 数据库中存在nchar类型的列时, 使用Linq to sql的问题
- 艾伟_转载:使用LINQ to SQL更新数据库(上):问题重重
- Linq to Sql中使用自定义枚举类型的奇怪问题
- Linq To EF 用泛型时生成的Sql会查询全表的问题
- 扩展LINQ to SQL:使用Lambda Expression批量删除数据
- LINQ TO SQL数据实体应该这样设计(解决多表关联问题)
- MVC中使用LINQ TO SQL实现多表查询及分页
- LINQ to SQL系列 查询 使用LINQ to SQL做简单查询
- Linq to sql:实体继承的使用
- Linq to Sql 或linq to entities 与SQL 查询结果不一致,返回重复结果问题解决方法
- Linq查询在LinqToSql以及DataTable中的使用
- 如何在ASP.NET项目里面正确使用Linq to Sql
- [转自JeffreyZhao]在LINQ to SQL中使用Translate方法以及修改查询用SQL
- Linq To EF 使用小知识(添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)
- 在LINQ to SQL中使用Translate方法以及修改查询用SQL
- Silverlight ——使用LINQ to SQL进行数据CRUD操作(上)
- LINQ To SQL 中使用In