如果本地列表变量,linq-to-sql失败

时间:2010-07-23 06:10:09

标签: linq-to-sql

我正在努力获得我认为简单的LINQ-to-SQL查询才能工作。我可以构造查询ok并且可以验证它生成的SQL是否正确但是在执行时获取可怕的“System.NotSupportedException:不支持具有本地集合的查询”异常。

我简化了我的查询,但简而言之,下面的查询有效:

var query = from asset in context where new[] { 1, 2, 3 }.Contains(asset.code) select asset

此查询也有效:

var query = from asset in context where new List<int>() { 1, 2, 3 }.Contains(asset.code) select asset

但是当尝试获取结果集时,下面的查询将失败:

List<int> myList = new List<int>(){1, 2, 3};
var query = from asset in context where myList.Contains(asset.code) select asset

有人解决了这类问题吗?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

这在LINQPad中适用于我:

List<int> myList = new List<int>(){1, 2, 3}; /* Fixed your compiler error here */
var query = from asset in assets where myList.Contains(asset.code) select asset; 

因此,我假设你实际上并没有为myList使用List,而是使用通用的IEnumerable或类似的东西?

请尝试粘贴您的“未简化”版本,因为您的简化会纠正您的错误。