无法将类型'string'隐式转换为'long'

时间:2012-05-19 18:59:46

标签: c#

我的MS Sql数据库中有两个表,Course和StudyCase,带有一个到Course_ID的FK ID(课程表)(在StudyCase表中)。我正在尝试从课程ID中找到StudyCase ID。

在存储库中:

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

在StudyCases服务中:

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

在StudyCases IServices中:

 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

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

我是MVC的新手,但这似乎更像是一个普通的C#问题而不是与MVC有关的问题。

相关问题