2014-02-17 136 views
2

我需要檢索的ID的名稱(assessment name的LINQ to SQL:通過ID選擇名稱(字符串)(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

你想擁有'AssessmentNo',但你選擇了'AssessmentName' - 是一個錯字嗎?因爲'... Name'聽起來像一個'string' ... – germi

回答

5

您的查詢返回一組整數。

使用其中之一:一(),單(),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沒有按」組t知道你的id是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(); 

這將導致用戶ID爲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