c# - 如何获得前1个月的年龄记录
问题描述
我的 FilterByAgeRequest 类结构
public class FilterByAgeRequest
{
[Required(ErrorMessage = "Username required")]
public string userName { get; set; }
public DateTime? from { get; set; }
public DateTime? fromTo { get; set; }
}
我想用计数计算不同的年龄。
var query = await _dataContext.Users
.Where(p => p.UserDob != null && p.CreatedAt >= request.from.Date && p.CreatedAt <= request.fromTo.Date) // exclude null DOB's from stats
.GroupBy(p => p.UserDob.Year)
.Select(g => new FilterByAgeResponseCls{ Age = DateTime.Now.Year - g.Key, Count = g.Count() })
.OrderBy(g => g.Age).ToListAsync().ConfigureAwait(true);
上面的查询执行完美,但现在我有了新的条件。如果 from 和 fromTo 是,我想从今天开始检索用户年龄数据的前一个月NULL
。如何在 linq 中检查 from 和 fromTo。
提前致谢。
解决方案
您需要(request.from != null && request.fromTo != null)
在Where
子句中添加条件,如下所示:
var query = await _dataContext.Users
.Where(p => p.UserDob != null &&
((request.from != null && request.fromTo != null)
? //It means from and fromTo is not null
(p.CreatedAt >= request.from.Date && p.CreatedAt <= request.fromTo.Date)
: // else means if from or fromTo is null then retrieve data from last one month
p.CreatedAt > DateTime.Now.AddMonths(-1) ))
.GroupBy(p => p.UserDob.Year)
.Select(g => new FilterByAgeResponseCls{ Age = DateTime.Now.Year - g.Key, Count = g.Count() })
.OrderBy(g => g.Age).ToListAsync().ConfigureAwait(true);
推荐阅读
- python - 如何在 Django 中将两个模型字段相加
- php - 更新作曲家错误显示后:未找到接口“Symfony\Contracts\Translation\LocaleAwareInterface”
- swift - 处理来自firebase的Null ref
- python - for循环中的引用变量嵌入在for循环中
- c# - 我如何通过用户名对datagridview的值求和
- java - 使用定时器的电梯程序
- django - Django 2.1 create 方法来创建嵌套字段(外键关系)。使用 Django 的 Rest 框架
- jenkins - 如何连接 Jenkins 和 Gieta
- typescript - 输入'选择
' 不能与类型 'Selection ' - r - 保存在列表中时,绘图中动态选择的变量无法正确呈现,但可以正常工作