类成员变量和“不支持使用本地集合的查询”

时间:2011-07-18 20:03:09

标签: linq linq-to-sql

我有一个List作为IN运算符的源。典型的linq-to-sql查询:

public void foo()
{
   var inThisListOnly = new string[] { "VA", "MA" };

   var result = (
       from o in Orders
       where inThisListOnly.Contains(o.State)
       select o
   )
   .ToDictionary( o => o.Id, o => o );
}
一切正常。我希望通过在foo之外移动toThisListOnly来保存几个CPU周期,以成为该类的成员变量。

public class FooClass
{
    private readonly string[] _inThisListOnly = new string[] { "VA", "MA" };

    public void foo()
    {
        var result = (
          from o in Orders
          where _inThisListOnly.Contains(o.State)
          select o
        )
        .ToDictionary( o => o.Id, o => o );
    }
}

在修改之后,我的程序开始抛出臭名昭着的“不支持本地集合的查询”异常。有人会对这种行为作出解释吗?从某种意义上说,不是_inThisListOnly比inThisListOnly本地更少?

感谢。

1 个答案:

答案 0 :(得分:0)

订单收集的类型是什么?是本地可枚举还是linq to sql提供的表?