C#Linq查询多个where条件

时间:2015-01-16 21:26:41

标签: c# linq

我想抓住所有行的状态= 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

3 个答案:

答案 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)

这是一个简单的语法问题。请注意,mIGrouping <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);