2013-12-11 131 views
4

在我的示例類中,它包含的IdValues是int?[]。這些值來自另一個具有Id作爲關鍵字段的類。不能將類型int []隱式轉換爲int?[]

//Database class 
public class SampleValues // this is a entity that i want to collect the deatil id 
{ 
    public int Id { get; set; } 
    public int?[] SampleDetailIdValue { get; set; } 
} 

public class SampleDetailValues // this is the detail entity 
{ 
    public int Id { get; set; } 
} 


// The error code 
if (sampleDetails.Count > 0) 
{ 
    sample.IdValues = sampleDetails.Select(s => s.Id).ToArray(); // << The error occurred this line. 
} 

的錯誤是無法隱式轉換類型int[]int?[]

回答

4

演員在您的投影:

sample.IdValues = sampleDetails.Select(s => (int?)s.Id).ToArray(); 

你被投射int,呼籲ToArray給你一個int[],所以索性改爲投影int?

有交替的Cast擴展方法:

sample.IdValues = sampleDetails 
    .Select(s => s.Id) 
    .Cast<int?>() 
    .ToArray(); 
1

它不能隱式轉換,但有明確的轉換應該工作

sample.IdValues = sampleDetails.Select(x => x.Id) 
           .Cast<int?>() 
           .ToArray(); 
相關問題