Linq to sql 如果本地列表变量

Linq to sql 如果本地列表变量,linq-to-sql,Linq To Sql,我正在努力让我认为是一个简单的LINQ到SQL查询工作。我可以构造查询ok,并可以验证它生成的SQL是否正确,但在执行get the可怕的系统时。NotSupportedException:不支持使用本地集合的查询异常 我简化了我的查询,但简而言之,以下查询有效: var query = from asset in context where new[] { 1, 2, 3 }.Contains(asset.code) select asset 此查询也适用于以下情况: var query =

我正在努力让我认为是一个简单的LINQ到SQL查询工作。我可以构造查询ok,并可以验证它生成的SQL是否正确,但在执行get the可怕的系统时。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

有人解决了这类问题吗?

这对我在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的列表,而是一个通用的IEnumerable或类似的东西


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

您发布的内容应该可以正常工作,这让我相信您实际上没有发布损坏的代码


确保MyList变量是列表而不是IList。。。如果变量类型为IList,则会出现异常。

我修复了错误,谢谢。问题不在于LINQ查询,甚至不在于SQL的生成,两者都能正常工作。当查询被发送到数据库时会发生异常,出于某种原因,linq to sql逻辑在查询中看到本地集合时会抛出伪集合,即使它能够生成sql和parameteres.Yep,这也是我的想法。如果您传入一个列表,它会将每个列表元素作为sql参数传入,并在@p1、@p2等中使用。IList将导致错误。这是另一个例子-