LINQ - to Entities无法识别方法system.string ToString()异常

时间:2013-09-25 15:04:54

标签: asp.net entity-framework

我的代码中出现了上述响铃异常。我尝试的是使用带有列表变量的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;
}

3 个答案:

答案 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。

尝试将列表类型更改为目标类型,或将其解析为新列表。