具有多个 where 条件的 C# Linq 查询
C# Linq query with multiple where conditions
我想获取所有行状态为 1 的成员,并确保 CreatedDate 是今天的日期。
我将它们分组,但我不知道我需要将 CreatedDate = Today 放在哪里
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 条件,但它给我一个编译错误。如何修复我的语法?谢谢
要检查今天的情况,您可以更简单地执行
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();
这是一个简单的语法问题。请记住,m
是一个 IGrouping
<anonymous, memberType>
,因此您的 .where
将需要使用 .Key
属性 来获取实际的匿名对象。
看起来像这样
.Where(m => m.All(s => s.Status == 1)
&& m.Key.CreatedDate.Value.ToShortDateString()
.Equals(DateTime.Now.ToShortDateString())
它应该也能正常工作:
var mids= _db.Members
.Where(m=>m.Status==1 && m.CreatedDate==DateTime.Today)
.Select(m=>m);
我想获取所有行状态为 1 的成员,并确保 CreatedDate 是今天的日期。
我将它们分组,但我不知道我需要将 CreatedDate = Today 放在哪里
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 条件,但它给我一个编译错误。如何修复我的语法?谢谢
要检查今天的情况,您可以更简单地执行
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();
这是一个简单的语法问题。请记住,m
是一个 IGrouping
<anonymous, memberType>
,因此您的 .where
将需要使用 .Key
属性 来获取实际的匿名对象。
看起来像这样
.Where(m => m.All(s => s.Status == 1)
&& m.Key.CreatedDate.Value.ToShortDateString()
.Equals(DateTime.Now.ToShortDateString())
它应该也能正常工作:
var mids= _db.Members
.Where(m=>m.Status==1 && m.CreatedDate==DateTime.Today)
.Select(m=>m);