代码之家  ›  专栏  ›  技术社区  ›  Amy B

编译的查询和“参数不能是序列”

  •  7
  • Amy B  · 技术社区  · 15 年前

    我认为编译后的查询将执行与DataContext相同的查询转换。但是,当我尝试使用带有.contains方法调用的查询时,会收到一个运行时错误。我哪里做错了?

    //private member which holds a compiled query.
    Func<DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
      compiledFiftyRecordQuery = System.Data.Linq.CompiledQuery.Compile
      <DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
      ((dc, ids) => dc.TestRecords.Where(tr => ids.Contains(tr.ID)).ToList());
    
    //this method calls the compiled query.
    public void FiftyRecordCompiledQueryByID()
    {
      List<int> IDs = GetRandomInts(50);
    
      //System.NotSupportedException
      //{"Parameters cannot be sequences."}
    
      List<DataAccess.TestRecord> results = compiledFiftyRecordQuery
        (myContext, IDs);         
    }
    
    1 回复  |  直到 14 年前
        1
  •  11
  •   Jeff Mattfield    15 年前

    This article 有你的答案:

    带有列表参数的查询不能 预编译,因为 查询依赖于数字 列表中的项。

    推荐文章