无法将int []类型隐式转换为int?[]

时间:2013-12-11 09:15:33

标签: c# entity-framework

在我的示例类中,它包含int?[]的IdValues。这些值来自具有Id作为关键字段的其他类。

//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?[]

2 个答案:

答案 0 :(得分:5)

投射你的投影:

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 :(得分:1)

不能隐式转换,但显式转换应该有效

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