user3247075
user3247075

Reputation: 293

LINQ to SQL: Selecting Name (string) by id (smallint)

I need to retrieve an id's name (assessment name)

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

Cannot implicitly convert type System.Linq.IQueryable' to int

Upvotes: 3

Views: 6058

Answers (5)

DKR
DKR

Reputation: 5734

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

Upvotes: 1

Jonathan Pick
Jonathan Pick

Reputation: 81

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

This will result with an the user Id as an int .

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

This will result with a user name as string .

Upvotes: 0

Hossain Muctadir
Hossain Muctadir

Reputation: 3626

Your code actually returns a list (which probably in your case contains one item). Compiler can not convert a IQueryable into an int. You can do something like this to resolve the issue,

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

Upvotes: 0

dovid
dovid

Reputation: 6462

Your query returns a set of integers.

Use one of these: 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;
}

or:

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

Upvotes: 6

Panu Oksala
Panu Oksala

Reputation: 3438

Linq defaultly returns group of things, linq doesn't know that your id is uniq.

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

if you want to receive default value if no proper item is found.

Upvotes: 1

Related Questions