2013-12-11 2 views
4

В моем классе класса он содержит IdValues, который равен int?[]. Значения взяты из другого класса с идентификатором в качестве ключевого поля.Невозможно неявно преобразовать тип 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(); 
Смежные вопросы