1
我有以下EF查询,它只返回数据库中存在的日期的使用情况数据列表。EF lambda表达式中的左外连接
var DailyUsage = context.UsageData.Where(u => u.UserID == CurrentUser.ID && u.Date >= Start && u.Date <= End)
.Select(p => new PerfData
{
Date = p.Date,
Transfers = p.Transfers,
Exists = p.Exists,
Duration = p.Duration
}).ToList();
我想它在0与数据点的不间断日期顺序返回一个列表在DB不存在的日期,所以我试图做一个左外连接与日期下面的列表中,但可以“不像是会得到它的权利:
public static List<DateTime> GetDateRange(DateTime startingDate, DateTime endingDate)
{
if (StartingDate > EndingDate)
{
return null;
}
List<DateTime> rv = new List<DateTime>();
DateTime tmpDate = startingDate;
do
{
rv.Add(tmpDate);
tmpDate = tmpDate.AddDays(1);
}
while (tmpDate <= endingDate);
return rv;
}
Thanks @ risky-martin!几乎就是这样。我希望日期返回PerfData列表,而不是匿名类型。类似于 'var日期=从GetDateRange中的日期(开始,结束) 加入dailyUsage在每日使用日期等于dailyUsage.Date到grp 选择新的PerData {Date = date,Transfers = dailyUsage.Transfers,Exists = dailyUsage.Exists ,Duration = dailyUsage.Duration};' – yqit
@yqit:这与最初的dailyUsages List有什么不同?没有PerDatas的日期应该发生什么? –
原始列表只包含DB中存在的日期。我希望列出所有日期之间的开始和结束日期,其中“转账= 0,存在= 0,持续时间= 0”的日期不在数据库中。我不确定我是否解释得很好。 – yqit