过滤LINQ查询

时间:2010-06-18 13:59:45

标签: c# asp.net linq linq-to-objects

这是我的询问。

var query = from g in dc.Group
            join gm in dc.GroupMembers on g.ID equals gm.GroupID
            where gm.UserID == UserID
            select new {
                id = g.ID,
                name = g.Name,
                pools = (from pool in g.Pool
                // more stuff to populate pools

所以我必须执行一些过滤,但是当我尝试过滤

var filter = query.Where(f => f.pools.[no access to list of columns]  

我无法访问“池”中的任何项目。有谁知道我怎么能访问它?

我想做的是:

var filterbyGame = query.Where(f = > f.pools.GameName == "TestGame");

如果我有这个设置,请告诉我这是否可能。

谢谢你们。

2 个答案:

答案 0 :(得分:4)

在您的查询中,您无法执行Where(f => f.pools.GameName) 因为f是IEnumerable<>

这样的事情应该有效:

Where(f => f.pools.Any(p => p.GameName == "TestGame"))

答案 1 :(得分:2)

pools是枚举,而不是单个实例。这就是为什么你没有得到列名。

您需要将过滤器更改为:

var filterByGame = query.Where(f => f.pools.Any(p => p.GameName == "TestGame"));