代码之家  ›  专栏  ›  技术社区  ›  thaBadDawg

如何使用list<>作为带有linq的where子句的条件?

  •  1
  • thaBadDawg  · 技术社区  · 16 年前

    所以我用头撞墙已经几个小时了,我想我会看看是否有人以前解决过这个问题…

    我有一个 List<string> 在搜索中用作筛选器的值。在过去,我会建立一系列 WHERE field = 'a' OR field = 'b' OR field = 'C' 进入查询。但在林格大楼这么长的时间里 WHERE 从句相当难。我希望能奏效的是:

    var results = from x in x.table
                  where x.Equals(List<string>)
                  select x;
    

    唉,编译器不够聪明,无法将列表分解为 WHERE field = 'a' OR field ='b' 一类查询。我已经将这个过程作为foreach循环在 列表<字符串> 但当我希望在SQL Server上执行该部分时,它会将处理推送到客户机上。我是住在这里的梦幻之地,还是有办法做到这一点?

    1 回复  |  直到 16 年前
        1
  •  6
  •   Christian C. Salvadó    16 年前

    可以使用contains()。

    List<string> yourList = new List<string> { "A", "B", "C" };
    
    var results = from x in x.table
                  where yourList.Contains(x)
                  select x;
    

    如果它是linq to sql,它将生成一个 WHERE field IN ('A', 'B', 'C') 条款。