首页 > 其他分享 >DataSet类型转换实体

DataSet类型转换实体

时间:2024-01-30 11:02:34浏览次数:24  
标签:类型转换 row 实体 List DataSet var model property 属性

查询DataSet类型无法对每条数据进行循环转换,利用泛型对象使用反射机制将对象相关属性进行自动赋值。

  • 基础调用
DataSet ds = DbHelper.Query(SQL);
if (ds.Tables[0].Rows.Count > 0)
{
    return DataRowToList_List_Genericity<ListData>(ds.Tables[0].Rows);
}
  
//ListData实体
public class ListData
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string Sex { get; set; }
    public string Address{ get; set; }
}
  • 泛型List<object>

        /// <summary>
        /// List<object>数据转换-泛型
        /// </summary>
        /// <param name="dataRowCollection"></param>
        /// <returns></returns>
        private List<T> DataRowToList_List_Genericity<T>(DataRowCollection dataRowCollection)
        {
            List<T> list = new List<T>();
            for (int i = 0; i < dataRowCollection.Count; i++)
            {
                T model = Activator.CreateInstance<T>();
                var row = dataRowCollection[i];
                // 获取T属性列表
                var properties = typeof(T).GetProperties();
                foreach (var property in properties)
                {
                    // 判断DataRow是否包含与属性名相同的列
                    if (row.Table.Columns.Contains(property.Name))
                    {
                        // 获取DataRow中与属性名相同的值
                        var value = row[property.Name];
                        // 将值转换为属性的类型
                        var convertedValue = Convert.ChangeType(value, property.PropertyType);
                        // 设置属性的值
                        property.SetValue(model, convertedValue);
                    }
                }
                list.Add(model);
            }
            return list;
        }
  • 泛型Object对象

        /// <summary>
        /// Object数据转换-泛型
        /// </summary>
        /// <param name="dataRowCollection"></param>
        /// <returns></returns>
        private T DataRowToList_Object_Genericity<T>(DataRowCollection dataRowCollection)
        {
            T model = Activator.CreateInstance<T>();
            var row = dataRowCollection[0];
            // 获取T属性列表
            var properties = typeof(T).GetProperties();
            foreach (var property in properties)
            {
                // 判断DataRow是否包含与属性名相同的列
                if (row.Table.Columns.Contains(property.Name))
                {
                    // 获取DataRow中与属性名相同的值
                    var value = row[property.Name];
                    // 将值转换为属性的类型
                    var convertedValue = Convert.ChangeType(value, property.PropertyType);
                    // 设置属性的值
                    property.SetValue(model, convertedValue);
                }
            }
            return model;
        }

 

标签:类型转换,row,实体,List,DataSet,var,model,property,属性
From: https://www.cnblogs.com/LaoPaoEr/p/17996671

相关文章

  • 无涯教程-Swift - 类型转换
    为了验证的类型,"TypeCasting"以Swift4语言开始发挥作用,它用于检查类型是属于特定的超类还是子类,或者是否在其自己的层次结构中定义。Swift4类型转换提供两个运算符"is"来检查值的类型和"as",并将类型值转换为其他类型,类型转换还检查类型是否遵循特定的协议一致性标准。类层......
  • LIst<实体>复制
    要将一个List<实体>复制到另一个List<实体2>上,你可以使用以下方法:遍历原始列表,将每个元素转换为实体2,然后添加到新列表中。使用Java8的StreamAPI进行转换和收集。这里是一个示例:importjava.util.ArrayList;importjava.util.List;importjava.util.stream.Collectors;cl......
  • C#中根据传入的字符串字段返回实体Lambda表达式
    我们在操作实体的时候,经常会使用到Lambda表达式,如下所示就是对实体IOT_Sample的CrtTime进行操作:varret=NestExtension.GetSort<IOT_Sample>(m=>m.CrtTime,true);但是往往有些时候我们具体的业务只告诉我们该实体的某个字段名称(字符串类型的),这个时候我们就需要根据传过来......
  • 最新Unity DOTS Instancing合批:如何针对单个渲染实体修改材质参数
    最近在做DOTS的教程,由于DOTS(版本1.0.16)目前不支持角色的骨骼动画,我们是将角色的所有动画数据Baker到一个纹理里面,通过修改材质中的参数AnimBegin,AnimEnd来决定动画播放的起点和终点,材质参数AnimTime记录当前过去的动画时间。但是在做大规模战斗控制的时候,有10000+的小兵在战斗......
  • C# 实体类转换的两种方式
    以下提供两种方式,一种是序列化,一种是泛型+反射;实现功能:   两个实体类数据转换赋值开发环境:   开发工具:VisualStudio2013   .NETFramework版本:4.5实现代码:    //学生类     privateclassStudent   {       publicstringname{get;se......
  • OpenHarmony—类型转换仅支持as T语法
    规则:arkts-as-casts级别:错误在ArkTS中,as关键字是类型转换的唯一语法,错误的类型转换会导致编译时错误或者运行时抛出ClassCastException异常。ArkTS不支持使用语法进行类型转换。当需要将primitive类型(如number或boolean)转换成引用类型时,请使用new表达式。TypeScriptclassSha......
  • 封装Excel读取,导出(实体类集合List、DataTable、DataGridView、实体类集合和DataTable
     1、引入使用 #region读取excel///<summary>///根据Excel和Sheet返回DataTable///</summary>///<paramname="filePath">Excel文件地址</param>///<paramname="sheetIndex">She......
  • Excel操作封装(NOPI),实体集合导出Excel,Excel读取到实体集合
      /**************************************************描述:**Author:ys*Date:2023/7/3117:45:03*Update:*************************************************/usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSyst......
  • 【每日GIS算法】(0)不同实体的构造
    本系列文章主要使用typescript手动实现GIS算法,其目的并不在于能够在正式生产中直接使用,而是可以通过对这些算法的实现,了解一些GIS方法的具体原理。本系列文章一定程度上与计算机图形学关系密切,也可以更好地了解图形学中相关知识点。本文作为本系列文章的第一篇,首先实现一些基础的......
  • scikit-learn.datasets 机器学习库
    scikit-learn是一个用于Python的机器学习库,提供了大量用于数据挖掘和数据分析的工具。以下是对这些函数和方法的简要描述:clear_data_home:清除数据集目录的内容。dump_svmlight_file:将数据集保存为SVMLight格式的文件。fetch_20newsgroups:下载20个新闻组的文本数据集。f......