所以我有这个方法可以创建一个DataRow
的对象:
public Comment CreateComment(DataRow row)
{
if (row == null) return null;
var id = (int) row["CommentPk"];
var song = (int) row["SongFk"];
var user = (int) row["AuthorFk"];
var text = (string) row["Content"];
var parent = (int?) row["ParentFk"];
return new Comment(_provider, id, song, user, text, parent);
}
Comment
的构造函数是:
public Comment(Provider provider, int id, int songid, int userid, string content, int? parentId)
它在构造函数行上崩溃了。我可以步骤(F11
):
答案 0 :(得分:1)
因此,可空列ParentFk
似乎存在问题。
而不是
var parent = (int?) row["ParentFk"]
我用过:
var parent = row["ParentFk"] == DBNull.Value ? null : (int?)row["ParentFk"];
我之前使用了DataRow
的可空列,但这个奇怪的例子从未发生过,而且它总是变为空。
修改强>
使用此:
var parent = row.IsNull("ParentFk") ? null : (int?)row["ParentFk"]
答案 1 :(得分:1)
我通过使用扩展方法来检查null / DBNull
来处理这种情况for item in nested:
_iterable = item if isinstance(item, list) else (item,)
for num in _iterable:
_element = num
result.append(_element)