我的代码中出现了上述响铃异常。我尝试的是使用带有列表变量的where子句,这就是为什么我使用Contains方法,但我一直得到错误,我无法理解我做错了什么
List<string> TouristID = (List<string>)Session["TouristID"];
List<Tourist> customerInterests = (from tourist in db2.Tourist
where (TouristID.Contains(tourist.Tourist_ID.ToString()))
select tourist).ToList();
foreach (var customer in customerInterests)
{
String strName_kir = customer.Name_kir;
String Lastname_kir = customer.Midname_kir;
}
答案 0 :(得分:3)
你不能在LinqToSql表达式中使用.ToString()
,因为它会尝试将其转换为SQL
答案 1 :(得分:2)
您不能使用ToString
或任何其他无法转换为SQL的方法。
您应该能够执行以下操作:
List<string> TouristID = (List<string>)Session["TouristID"];
//Get them as integers
var touristIds = TouristID.Select(x => int.Parse(x));
List<Tourist> customerInterests = (from tourist in db2.Tourist
where (touristIds.Contains(tourist.Tourist_ID))
select tourist).ToList();
答案 2 :(得分:1)
LinQ to Entities不会评估ToString()
方法,因为它无法转换为SQL。
尝试将列表类型更改为目标类型,或将其解析为新列表。