在我的示例类中,它包含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?[]
答案 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();