LINQ to SQL:按ID(smallint)选择名称(字符串)

时间:2014-02-17 07:01:13

标签: c# sql linq

我需要检索一个id的名称(assessment name

 public int GetAssessmentNo(int AssessmentNo)
        {
            int AssNo = (from a in contxt.View_Assessment
                         where a.id == AssessmentNo
                         select a.AssessmentName);
            return AssNo;
        }

无法将类型 System.Linq.IQueryable '隐式转换为 int

5 个答案:

答案 0 :(得分:5)

您的查询返回一组整数。

使用以下方法之一:First(),Single(),FirstOrDefault(),SingleOrDefault()

public int GetAssessmentNo(int AssessmentNo)
{
    int AssNo = (from a in contxt.View_Assessment
                 where a.id == AssessmentNo
                 select a).Single().AssessmentName;
    return AssNo;
}

或:

public int GetAssessmentNo(int AssessmentNo)
{
    int AssNo = contxt.View_Assessment.Single(a => a.id == AssessmentNo).AssessmentName;
    return AssNo;
}

答案 1 :(得分:1)

Linq默认返回一组内容,linq不知道你的id是uniq。

(from a in contxt.View_Assessment where a.id == AssessmentNo select a.AssessmentName).First() or FirstOrDefault

如果您想在没有找到合适的项目时收到默认值。

答案 2 :(得分:1)

public string GetAssessmentNo(int AssessmentNo)
{
    string AssNo = (from a in contxt.View_Assessment
                 where a.id == AssessmentNo
                 select a).Single().AssessmentName;
    return AssNo;
}
If you write int Assno you cannot select AssessmentName because it is string datatype.you can change method datatype int to string after this you will get AssessmentName 
Hope it will help you

答案 3 :(得分:0)

     var usersId = contxt.View_Assessment.Where(a=> a.Username == AssessmentName).Select(a => a.Id).FirstOrDefault();

这将导致用户ID为int。

 var usersId = contxt.View_Assessment.Where(a=> a.Id == AssessmentNo).Select(a => a.Name).FirstOrDefault();

这将导致用户名为字符串。

答案 4 :(得分:0)

您的代码实际返回一个列表(在您的情况下可能包含一个项目)。编译器无法将IQueryable转换为int。你可以做这样的事情来解决这个问题,

public int GetAssessmentNo(int AssessmentNo)
{
    return contxt.View_Assessment.First(a=> a.id == AssessmentNo).AssessmentName;
}
相关问题