WCF返回表datatable时的解决

简介:

在WCF中有时返回值类型是一张表,就会遇到反序列化的问题。解决该问题我归纳了两种方法:

1、根据Model层的类,在服务器端将Table转化成List,在客户端再将List转化为table

  /// 将集合类转换成DataTable
        /// </summary>
        /// <param name="list">集合</param>
        /// <returns></returns>
        public static DataTable ToDataTable(IList list)
        {
            DataTable result = new DataTable();
            if (list.Count > 0)
            {
                PropertyInfo[] propertys = list[0].GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    result.Columns.Add(pi.Name, pi.PropertyType);
                }

                for (int i = 0; i < list.Count; i++)
                {
                    ArrayList tempList = new ArrayList();
                    foreach (PropertyInfo pi in propertys)
                    {
                        object obj = pi.GetValue(list[i], null);
                        tempList.Add(obj);
                    }
                    object[] array = tempList.ToArray();
                    result.LoadDataRow(array, true);
                }
            }
            return result;
        }

 

2、直接在服务端为表命名,Dt.TableName="aaa";

相关文章
|
SQL 存储
关于sql存储过程接收参数为datatable
1.首先你的sql server 必须是2008以上版本; 2.自定义表类型,在类型下面的用户自定表类型下可查看          语法:  create type table_name  as table( 字段),字段部分为创建普通的表一样,如  id  int  3.
1348 0
DataTable 更改在有数据列的类型方法
原文:DataTable 更改在有数据列的类型方法 /// /// 修改数据表DataTable某一列的类型和记录值(正确步骤:1.克隆表结构,2.修改列类型,3.修改记录值,4.
1445 0