隐式转换类型'int?' 'int'

时间:2016-08-03 06:16:52

标签: json entity-framework linq webmethod

我尝试以json格式获取数据,我尝试使用此Web方法代码

格式:

[{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();
}

但这显示错误:

  

无法隐式转换类型'int?' 'int'。存在显式转换(您是否错过了演员?)

当我在模型中添加存储过程然后创建函数导入时,我选择复杂类型

[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 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

  

无法隐式转换类型'int?'到'int'。

'int?'这意味着支持integernull值,如果您想将其转换为整数。

A = B??0;

其中AintBint?

B??0

这意味着当B包含null值时,它会转换为0值。