1

我的代码中有上述环形异常。我尝试将 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;
}
4

3 回答 3

3

您不能.ToString()在 LinqToSql 表达式中使用,因为它会尝试将其转换为 SQL

于 2013-09-25T15:06:44.207 回答
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();
于 2013-09-25T15:09:43.373 回答
1

LinQ 不对实体评估该ToString()方法,因为它无法转换为 SQL。

尝试将列表的类型更改为目标类型或将它们解析为新列表。

于 2013-09-25T15:11:35.457 回答