代码之家  ›  专栏  ›  技术社区  ›  Jack Marchetti

筛选Linq查询

  •  2
  • Jack Marchetti  · 技术社区  · 14 年前

    这是我的问题。

    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 回复  |  直到 14 年前
        1
  •  2
  •   Justin Niessner    14 年前

    pools 是枚举,不是单个实例。这就是为什么不获取列名的原因。

    您需要将筛选器更改为如下内容:

    var filterByGame = query.Where(f => f.pools.Any(p => p.GameName == "TestGame"));
    
        2
  •  4
  •   minimalis    14 年前

    在您的查询中,您不能执行Where(f=>f.pools.gamename) 因为f是一个IEnumerable<gt;

    类似这样的事情应该会奏效:

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