2017-07-17 158 views
-1

我需要得到这个linq查询的sql查询。我使用linqpad。 我用Id变量调用。当执行LINQ查询得到错误linqpad中linq查询执行错误

) or end of expression expected (change the Query Language to 'C# Statements' for multi-statement queries)

查询语言是C#中的表达。

如何解决这个问题?

Id=110000; 
from u in BusProvinces 
where (from s in BusProvinces 
     join buscities in BusCities on s.Id equals buscities.ProvinceId 
     join buspath in BusPaths on buscities.Id equals buspath.DesId 
     where (buspath.DepId == Id || Id == 0) 
     select s.Id).Contains(u.Id) 
select u 

enter image description here

+5

答案是错误声明。更改查询语言。 –

回答

1

变化从工具栏上面的代码编辑器中的查询语言C# statements

enter image description here

+0

错误:;预期 'in'表达式中的'term'' – programmer138200

+0

LINQ查询中有几个'in'关键字。你可以请尝试缩小罪魁祸首吗? – RBT

+0

不,这是不可能的 – programmer138200

2

的问题是,你混合两种Query Languages这里。 虽然Id=110000;single-line statement

from u in BusProvinces 
where (from s in BusProvinces 
     join buscities in BusCities on s.Id equals buscities.ProvinceId 
     join buspath in BusPaths on buscities.Id equals buspath.DesId 
     where (buspath.DepId == Id || Id == 0) 
     select s.Id).Contains(u.Id) 
select u 

是一个Expression

简单的解决方案:将您的Linq表达式包装在var中。

var query = (from u in BusProvinces 
where (from s in BusProvinces 
     join buscities in BusCities on s.Id equals buscities.ProvinceId 
     join buspath in BusPaths on buscities.Id equals buspath.DesId 
     where (buspath.DepId == Id || Id == 0) 
     select s.Id).Contains(u.Id) 
select u); 

全码:

Id=110000; 
var query = (from u in BusProvinces 
where (from s in BusProvinces 
     join buscities in BusCities on s.Id equals buscities.ProvinceId 
     join buspath in BusPaths on buscities.Id equals buspath.DesId 
     where (buspath.DepId == Id || Id == 0) 
     select s.Id).Contains(u.Id) 
select u); 
+0

错误:)或预期的表达式结束(将查询语言更改为针对多语句查询的“C#语句”) – programmer138200