不能将类型“字符串”隐式转换为“长”

本文关键字:字符串 转换 不能 类型 | 更新日期: 2023-09-27 18:34:38

我的MS SQL数据库中有两个表,课程和StudyCase,有一个FK ID(课程表(要Course_ID(在StudyCase表中(。 我正在尝试从课程ID中查找学习案例ID。

在存储库中:

  public IQueryable<StudyCase> ListStudyCases(long courseId)
        {
            return _dbContext.StudyCases.Where(c => c.Course_ID == courseId);
        }

在研究案例服务中:

public IQueryable<StudyCase> ListStudyCases(long courseId)
    {
        return this._StudyCaseRepository.ListStudyCases(courseId);
    }

在研究案例中:

 IQueryable<StudyCase> ListStudyCases(long courseId);

从课程控制器发送操作:

 return RedirectToAction("Index", "CourseCases", new { courseId = 6 });

在 StudyCase 控制器中:

    public ActionResult Index(long courseId)
        {
            string id = "";
            id = _studyCaseSvc.ListStudyCases(courseId).First().ID.ToString();
            StudyCase cases = _studyCaseSvc.GetStudyCase(id);
...

我收到以下两个错误:

Cannot implicitly convert type 'string' to 'long'

The best overloaded method match for 'IStudyCaseService.GetStudyCase(long)' has some invalid arguments

感谢您的帮助。

不能将类型“字符串”隐式转换为“长”

只需使用您的操作参数而不将其转换为字符串。

public ActionResult Index(long courseId)
    {
        var id = _studyCaseSvc.ListStudyCases(courseId).First().ID;
        StudyCase cases = _studyCaseSvc.GetStudyCase(id);
你把

id声明为一个字符串,如果你想用它作为GetStudyCase的参数,它需要是一个long。 如果要传递字符串,则GetStudyCase应该具有接受字符串的重载。

我是MVC

的新手,但这似乎更像是一个一般的C#问题,而不是与MVC特别相关的问题。