LINQ to Entities无法识别MVC中的方法错误

本文关键字:方法 错误 MVC 识别 to Entities LINQ | 更新日期: 2023-09-27 18:26:14

我收到这个错误

LINQ to Entities无法识别方法"System.String"Format(System.String、System.Object、System.Object)"方法,并且此方法无法转换为存储表达式。

我想做的是在数据库中列出我的所有值。

这是我认为的代码:

  <div class="col-md-10">
      @Html.DropDownList("SelectedScheduleId", Model.ScheduleSelectListItems, htmlAttributes: new { @class = "form-control" })
      @Html.ValidationMessageFor(model => model.sched_id, "", new { @class = "text-danger" })
  </div>

这是我模型中的课堂:

  public class BookingModel
    {
        [Required]
        [StringLength(200, ErrorMessage = "Description too short. Must be at least {2} characters long", MinimumLength = 10)]
        [Display(Name = "Describe your Consultation")]
        public string appointment_description { get; set; }
        public int appointment_id { get; set; }
        public int student_id { get; set; }
        public int sched_id { get; set; }
        public sched sched { get; set; }
        public IEnumerable<SelectListItem> ScheduleSelectListItems { get; set; }
        public int SelectedScheduleId { get; set; }
    }

和我的控制器:

public ActionResult Book()
{
    var items = db.scheds.Select(sched => new SelectListItem { Text = string.Format("{0} - {1}", sched.sched_stime, sched.sched_etime), Value = sched.sched_id.ToString() });
    var model = new BookingModel { ScheduleSelectListItems = items };
    return View(model);
}

我只想把时间表的值放在下拉列表中。

我咨询过别人关于如何列出外键值的问题,现在我遇到了一个新的错误。我该怎么解决这个问题?这是我完成项目的唯一障碍(

LINQ to Entities无法识别MVC中的方法错误

我想在使用LinqToSQL时,您显然不能使用string.Format

您有两个选项:

var items = db.scheds
   .ToList()
   .Select(sched => new SelectListItem 
   { 
      Text = string.Format("{0} - {1}", sched.sched_stime, sched.sched_etime),    
      Value = sched.sched_id.ToString() 
   });

使用.ToList()将表从数据库填充到服务器。然后,当您调用string.Format时,您将使用LinQToObjects

或者连接不带string.Format:的字符串

Text = sched.sched_stime + " - " + sched.sched_etime,

然后LinQToSQL能够翻译它。