2014-02-17 3 views
2

мне нужно получить имя идентификатор в (assessment name)LINQ к SQL: Выбор имя (строка) по идентификатору (SMALLINT)

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

+1

'AssessmentName' является' string'? – Yoav

+1

Вы хотите иметь «ОценкаNo», но вы выбираете «Оценочное имя» - это опечатка? Поскольку '... Name' звучит как' string' ... – germi

ответ

5

Ваш запрос возвращает набор целых чисел.

Используйте один из них: Во-первых(), 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

Linq defaultly возвращает группу вещей, LINQ Безразлично» Знайте, что ваш идентификатор - uniq.

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

Если вы хотите получить значение по умолчанию, если не найдено ни одного элемента.

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

Это приведет к идентификатору пользователя как int.

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

Это приведет к имени пользователя в виде строки.

+0

Даже если ваш ответ содержит некоторые аспекты, применимые к вопросу, было бы лучше, если бы вы использовали код OP, чтобы показать, как это сделать правильно , – germi

+0

Как насчет этого? лучше? @germi –

0

Ваш код фактически возвращает список (который, вероятно, в вашем случае содержит один элемент). Компилятор не может преобразовать IQueryable в int. Вы можете сделать что-то вроде этого, чтобы решить эту проблему,

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

Его код не возвращает 'List' - он возвращает' IQueryable' - это разница. – germi

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 
Смежные вопросы