我想抓住所有行的状态= 1的成员,并确保CreatedDate是今天的日期。
我将它们分组,但我不知道在哪里需要放置CreatedDate =今天
var mids= _db.Members
.GroupBy(m => new { m.MemberID, m.CreatedDate })
.Where(m => m.All(s => s.Status == 1)) //&& m.CreatedDate.Value.ToShortDateString().Equals(DateTime.Now.ToShortDateString())
.Select(
group => new
{
MID = group.Key
}).ToList();
我尝试在.Where子句中添加CreatedDate条件,但它给了我一个编译错误。如何修复语法? Merci
答案 0 :(得分:0)
要查看今天,您可以更简单地执行
if(CreatedDate.Date == DateTime.Today)
然后,你想看看键:
var mids = _db.Members
.GroupBy(m => new { m.MemberID, m.CreatedDate })
.Where(m => m.All(s => s.Status == 1) && m.Key.CreatedDate.Date == DateTime.Today)
.Select(
group => new
{
MID = group.Key
}).ToList();
或者您可以在GroupBy之前过滤它们:
var mids = _db.Members
.Where(m => m.CreatedDate.Date == DateTime.Today)
.GroupBy(m => m.MemberID)
.Where(m => m.All(s => s.Status == 1))
.Select(
group => new
{
MID = group.Key
}).ToList();
答案 1 :(得分:0)
这是一个简单的语法问题。请注意,m
是IGrouping
<anonymous, memberType>
,因此您的.where
需要使用.Key
属性来获取实际的匿名对象。
看起来像这样
.Where(m => m.All(s => s.Status == 1)
&& m.Key.CreatedDate.Value.ToShortDateString()
.Equals(DateTime.Now.ToShortDateString())
答案 2 :(得分:0)
它应该起作用:
var mids= _db.Members
.Where(m=>m.Status==1 && m.CreatedDate==DateTime.Today)
.Select(m=>m);