wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ado.net – 无法为DataTable WriteXML,因为Windows Search返回作者属性的字符串数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

System.Author Windows属性是一个多值字符串. Windows搜索将此值作为Datacolumn中的字符串数组返回. (列的数据类型是String []或String().)当我在结果数据表上调用WriteXML方法时,我得到以下InvalidoperationException异常. 有没有办法指定数据表的xml-serializer用于特定列或特定数据类型? 基本上,如何使W
System.Author Windows属性一个多值字符串. Windows搜索将此值作为Datacolumn中的字符串数组返回. (列的数据类型是String []或String().)当我在结果数据表上调用WriteXML方法时,我得到以下InvalidoperationException异常.

有没有办法指定数据表的xml-serializer用于特定列或特定数据类型?

基本上,如何使WriteXML与此数据表一起使用?

解决方法

您可以轻松地复制DataTable,将违规的Authors列更改为String,并将字符串[]数据与正确的分隔符(如“|”)联接起来要么 ”; ”.

DataTable xmlFriendlyTable = oldTable.Clone();
xmlFriendlyTable.columns["Author"].DataType = typeof(String);
xmlFriendlyTable.columns["Author"].columnMapping = MappingType.Element;
foreach(var row in oldTable.Rows) {
    object[] rowData = row.ItemArray;
    object[] cpyRowData = new object[rowData.Length];
    for(int i = 0; i<rowData.Length; i++) {
        if(rowData[i] != null && rowData[i].GetType() == typeof(String[])) {
            cpyRowData[i] = String.Join("; ",(rowData[i] as String[]));
        } else {
            cpyRowData[i] = rowData[i];
        }
        xmlFriendlyTable.Rows.Add(cpyRowData);
    }
}
xmlFriendlyTable.WriteXml( ... );

注意在Web浏览器中写了上述内容,因此可能存在语法错误.

大佬总结

以上是大佬教程为你收集整理的ado.net – 无法为DataTable WriteXML,因为Windows Search返回作者属性的字符串数组全部内容,希望文章能够帮你解决ado.net – 无法为DataTable WriteXML,因为Windows Search返回作者属性的字符串数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。