C# 按上下文分组中使用扩展方法筛选查询

C# 按上下文分组中使用扩展方法筛选查询,c#,vb.net,linq,C#,Vb.net,Linq,假设我有以下查询: From row In DataSet.A Where row.Position <> 5 Group row By row.Name Into eGroup = Group Select New With { .Name = Name, .Amount = eGroup.Count(Function(x) x.Money) } 现在我想按月过滤。我知道我可以用 .Where(Function(el) ls.Contains(datepart(m

假设我有以下查询:

From row In DataSet.A
Where row.Position <> 5
Group row By row.Name Into eGroup = Group
Select New With {
    .Name = Name,
    .Amount = eGroup.Count(Function(x) x.Money)
}
现在我想按月过滤。我知道我可以用

.Where(Function(el) ls.Contains(datepart(month,el.date)))
但是如果我把这个设置在Where row.Position 5后面,查询就不会再运行了,因为它就像断了一样,无法连接到代码后缀

任何人都可以告诉我如何设置过滤器?

为什么不能:

Dim months = {1, 2}
Dim query = From row In DataSet.A
            Where row.Position <> 5 AndAlso months.Contains(row.Date.Month)
            Group row By name Into eGroup = Group
            Select New With {
                Key .Name = name,
                .Amount = eGroup.Count(Function(row) row.Field(Of Decimal)("Money"))
            }

C是如何涉及的?顺便说一句,你确定计算每个组的钱而不是总和是正确的吗?嗨,蒂姆,是的,它是可以的,因为它是,原来的查询有点长,可能有点混乱,所以我使用了一个较短的版本。亚历克斯:解决方案是用c还是用vb都没关系。许多程序员可以同时编程.NET和.NET。我可以重写一个c解决方案。所以我不在乎这个解决方案是用c还是vb,这就是为什么。我没有想到它,因为我认为Contains在查询方法中是不可用的。我知道我更清楚。谢谢你的帮助!
Dim months = {1, 2}
Dim query = From row In DataSet.A
            Where row.Position <> 5 AndAlso months.Contains(row.Date.Month)
            Group row By name Into eGroup = Group
            Select New With {
                Key .Name = name,
                .Amount = eGroup.Count(Function(row) row.Field(Of Decimal)("Money"))
            }