我尝试以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
}
答案 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?'
这意味着支持integer
和null
值,如果您想将其转换为整数。
A = B??0;
其中A
为int
而B
为int?
B??0
这意味着当B
包含null
值时,它会转换为0
值。