2016-08-03 3 views
1

Я пытаюсь получить данные в формате JSON для этого я стараюсь этот веб-метод кодНеявно конвертировать тип 'int?' к «межд»

Формат:

[{name: 'May',data: [23]}, {name: 'June', data: [43]}, {name: 'July', data: [45]}] 

Код:

try 
{ 
    var data = new Datas1().spsumdata().Select(s => new { name = s.Month, data = new int[] {s.data} }).ToArray(); 
    return Newtonsoft.Json.JsonConvert.SerializeObject(data); 
} 
catch(Exception) 
{ 
    throw new Exception(); 
} 

, но это показывает ошибку:

Cannot implicitly convert type 'int?' to 'int'. An explicit conversion exists (are you missing a cast?)

Когда я добавляю хранимую процедуру в модель и затем создаю функцию im порт я выбираю сложный тип

[EdmComplexTypeAttribute(NamespaceName="TrackDataModel", Name="spsumdata_Result")] 
[DataContractAttribute(IsReference=true)] 
[Serializable()] 
public partial class spsumdata_Result : ComplexObject 
{ 
    #region Simple Properties 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public global::System.String OwnerName 
    { 
     get 
     { 
      return _OwnerName; 
     } 
     set 
     { 
      OnOwnerNameChanging(value); 
      ReportPropertyChanging("OwnerName"); 
      _OwnerName = StructuralObject.SetValidValue(value, true, "OwnerName"); 
      ReportPropertyChanged("OwnerName"); 
      OnOwnerNameChanged(); 
     } 
    } 
    private global::System.String _OwnerName; 
    partial void OnOwnerNameChanging(global::System.String value); 
    partial void OnOwnerNameChanged(); 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public global::System.String Month 
    { 
     get 
     { 
      return _Month; 
     } 
     set 
     { 
      OnMonthChanging(value); 
      ReportPropertyChanging("Month"); 
      _Month = StructuralObject.SetValidValue(value, true, "Month"); 
      ReportPropertyChanged("Month"); 
      OnMonthChanged(); 
     } 
    } 
    private global::System.String _Month; 
    partial void OnMonthChanging(global::System.String value); 
    partial void OnMonthChanged(); 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public Nullable<global::System.Int32> data 
    { 
     get 
     { 
      return _data; 
     } 
     set 
     { 
      OndataChanging(value); 
      ReportPropertyChanging("data"); 
      _data = StructuralObject.SetValidValue(value, "data"); 
      ReportPropertyChanged("data"); 
      OndataChanged(); 
     } 
    } 
    private Nullable<global::System.Int32> _data; 
    partial void OndataChanging(Nullable<global::System.Int32> value); 
    partial void OndataChanged(); 

    #endregion 
} 

ответ

2

Свойство data имеет тип int? но вы пытаетесь добавить его в массив типа int.

Вам необходимо либо сделать массив типа int? для соответствия или преобразования значения data в int.

var data = new Datas1().spsumdata() 
    .Select(s => new 
    { 
     name = s.Month, 
     // take your pick 
     //data = new int?[] { s.data }, 
     //data = new int[] { s.data ?? 0 }, 
     //data = new int[] { s.data.Value }, 
    }).ToArray(); 
0

Cannot implicitly convert type 'int?' to 'int'.

'int?' это означает, что поддержка integer и null значение, если вы хотите, чтобы преобразовать его в целое число.

A = B??0; 

, где A, как int и B, как int?

B??0 

это означает, что, когда B содержат null Вейл это конвертировать в 0 значение.

Смежные вопросы