2017-04-03 62 views
0

我有這個類:使用LINQ返回的groupId

public class Person 
{ 
    public int Id { get; set; } 
    public string UserName { get; set; } 
    public int GroupId { get; set; }  
} 

我怎樣做,如果我想返回GroupId,如果我給Id ..喜歡

public Person GetGroupId (int id) 
{ 
    return _context.Person.Where(c => c.Id == id) 
          .Select(x => x.GroupId) 
          .FirstOrDefault(); 
} 

但是,這給我的錯誤像「不能隱式轉換類型」的消息。

回答

3

查詢返回的類型與方法定義的返回類型不匹配。

更新該方法返回所需的類型,在這種情況下是int

public int GetGroupId (int id) { 
    return _context.Person.Where(c => c.Id == id).Select(x => x.GroupId).FirstOrDefault(); 
} 
+0

這將導致來自'FirstOrDefault'的null值的問題,您也可以返回'int?'或'Person' –

0

由於明確的問題是,因爲你是返回int (GroupId)和期待Person,因爲有兩種類型之間沒有默認的轉換,這將被編譯時間問題,現在因爲你是在FirstOrDefault,這意味着數據可能會或可能不存在,結果可能是null,以下是我的做法依託:

方法

public Person GetGroupId (int id) 
{ 
    return _context.Person.FirstOrDefault(c => c.Id == id); 
} 

調用

var groupId = GetGroupId(id)?.GroupId; 

現在這裏groupId可能會或可能不會爲空,這取決於Person type值。理想情況下,同樣的方法應該是GetPerson