c# – 本地序列不能在LINQ to SQL中使用查询运算符,除了Contains()运算符

我在我的项目中使用LINQ,我的代码是:

var SE = from c in Shop.Sections
                    join c1 in obj.SectionObjects on c.SectionId equals c1.SectionId
                    select c;

 dataGridView1.DataSource = SE;

但是我在线DataGridView1.DataSource = SE中遇到这个错误
错误信息是:

Local sequence cannot be used in LINQ to SQL implementation of query operators except the Contains() operator.

感谢帮助。

您不能使用SQL源和本地源之间的连接。您可以将SQL数据带入内存,然后才能加入。在这种情况下,您并没有真正做一个连接,因为您只从第一个集合中获取元素,您想要的是一个select …其中… selectid在查询中,您可以使用Contains方法。

 var SE = Shop.Sections.Where( s => obj.SectionObjects
                                       .Select( so => so.SectionId )
                                       .Contains( s.SectionId ))
                       .ToList();

翻译成

select * from Sections where sectionId in (...)

where子句的值来自本地对象集合中的id列表。

翻译自:https://stackoverflow.com/questions/8164460/local-sequence-cannot-be-used-in-linq-to-sql-implementation-of-query-operators-e

转载注明原文:c# – 本地序列不能在LINQ to SQL中使用查询运算符,除了Contains()运算符