static public string CreatePlaylist(int userId, string playlistName, int playlistImgId)
{
DataTable playlistTable = Dal.CreatePlaylist(userId, playlistName, playlistImgId);
Playlist p = new Playlist((int)playlistTable.Rows[0]["UserID"]);
p.PlaylistName = playlistTable.Rows[0]["Playlist_Name"] == DBNull.Value ? null : (string)playlistTable.Rows[0]["Playlist_Name"];
p.PlaylistImg = playlistTable.Rows[0]["Playlist_Img_ID"] == DBNull.Value ? null : (int)playlistTable.Rows[0]["Playlist_img_ID"];
return new JavaScriptSerializer().Serialize(p);
}
我收到此错误:
无法确定条件表达式的类型,因为'int'和
之间没有隐式转换
我发现了与此类似的问题,但不了解他们的解决方案。
答案 0 :(得分:3)
您正在将playlistTable.Rows[0]["Playlist_img_ID"]
转换为int,但是您有一个三元运算符(?:),其中另一个操作数为null。
int
和null
对于三元操作不兼容。您应该使用可为空的int?
类型。
代替:
p.PlaylistImg = playlistTable.Rows[0]["Playlist_Img_ID"] == DBNull.Value ? null : (int)playlistTable.Rows[0]["Playlist_img_ID"];
要做:
p.PlaylistImg = playlistTable.Rows[0]["Playlist_Img_ID"] == DBNull.Value ? null : (int?)playlistTable.Rows[0]["Playlist_img_ID"];
请参见Conditional operator assignment with Nullable<value> types?