如何在C#中将DataSet转换为Entity?

查理士

在这里,我想出了第一种方法:即使用DataSet上的foreach子句获取项目并填写您的Entity。但是,当某些事情发生变化时,该方法将无法重用。

因此,我认为反思可能是我的最佳方案。以下是详细信息:

1.我的实体定义如下:

using System.ComponentModel;

namespace WarningServiceForYM.Model
{
   public class StuffEntity
   {
    [Description("企业ID")]
    public string EnterpriseID { get; set; }  

     [Description("冰柜编号")]
    public string FridgeID { get; set; }        

    [Description("冰柜名称")]
    public string FridgeName { get; set; }   

    [Description("手机号码")]
    public string PhoneNumber { get; set; }  

    [Description("设备名称")]
    public string EquipmentName { get; set; } 

    [Description("采集参数")]
    public string PickingParams { get; set; }   

    [Description("一路温度")]
    public string TempOne { get; set; }         

    [Description("二路温度")]
    public string TempTwo { get; set; }         

    [Description("三路温度")]
    public string TempThree { get; set; }         

    [Description("四路温度")]
    public string TempFour { get; set; }         

    [Description("五路温度")]
    public string TempFive { get; set; }         

    [Description("六路温度")]
    public string TempSix { get; set; }         

    [Description("七路温度")]
    public string TempSeven { get; set; }         

    [Description("八路温度")]
    public string TempEight { get; set; }         

    [Description("温度最低")]
    public string  Min { get; set; }    

    [Description("温度最高")]
    public string Max { get; set; }  

    [Description("采集时间")]
    public string PickingTime { get; set; } 

    [Description("通知间隔")]
    public string WarningPeriod { get; set; }  

    [Description("延时")]
    public string PendingTime { get; set; }  

    [Description("通知开关")]
    public string Switch { get; set; }  

    [Description("最后通知时间")]
    public string LastInformTime { get; set; }  
    }
}
  1. 以下是数据集屏幕截图: 在此处输入图片说明

我已将此DataSet的数据保存到csv文件中,请单击此处查找它。

StuffEntity中的内部属性与DataSet中的列标题具有相同的描述。

有人可以给我一种方法来显示如何将此数据集转换为StuffEntity吗?

本机

好的,使用反射:

public static T GetEntity<T>(DataRow row) where T : new()
{
    var entity = new T();
    var properties = typeof(T).GetProperties();

    foreach (var property in properties)
    {
        //Get the description attribute
        var descriptionAttribute = (DescriptionAttribute)property.GetCustomAttributes(typeof(DescriptionAttribute), true).SingleOrDefault();
        if (descriptionAttribute == null)
            continue;

        property.SetValue(entity, row[descriptionAttribute.Description]);
    }

    return entity;
}

您可以像这样使用它:

foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
    var e = GetEntity<StuffEntity>(dataRow);
    Console.WriteLine(e.EnterpriseID);
}

这是一个通用的实现,因此您可以将其与所需的任何其他类型或数据集一起使用。我努力使它尽可能简单,因此可以通过添加一些一致性来进行广泛改进,例如在设置实体值之前检查列名是否存在,或者根据需要验证重复的描述。例如,也可以将其转换为DataRow,DataTable或DataSet的扩展方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#中将List <dynamic>转换为List <OurClass>

来自分类Dev

如何在C#中将List <BaseClass>强制转换为List <ChildClass>?

来自分类Dev

如何在C#中将类型转换为System.Type的类型转换

来自分类Dev

如何在C#中将.docx转换为.pdf

来自分类Dev

如何在C#中将double转换为dateTime值?

来自分类Dev

如何在C#中将数据表转换为锯齿状数组?

来自分类Dev

如何在C#中将object [,]转换为数据表

来自分类Dev

如何在C ++ / CLI中将C#可为空的枚举转换为int

来自分类Dev

如何在C#中将异步的返回类型Task <DataView>转换为DataView

来自分类Dev

如何在C#中将vb6'vbFromUnicode'转换为字符串

来自分类Dev

如何在C#中将int转换为数字char?

来自分类Dev

如何在C#中将void指针转换为struct

来自分类Dev

如何在C#中将文本框值转换为double?

来自分类Dev

如何在C#中将2D数组转换为2D列表

来自分类Dev

如何在C#中将等号“ =”的字符串转换为json

来自分类Dev

如何在C#中将Type转换为TEnum

来自分类Dev

如何在Spring Boot中将DTO转换为Entity?

来自分类Dev

如何在C#中将IEnumerable转换为IList

来自分类Dev

如何在C#中将类型转换为System.Type的类型转换

来自分类Dev

如何在C#中将整数转换为单词?

来自分类Dev

如何在C#中将xml转换为DataTable

来自分类Dev

如何在C#中将z坐标转换为角度?

来自分类Dev

如何在C#中将Json数组转换为列表

来自分类Dev

如何在C#中将整数转换为字符?

来自分类Dev

如何在C#中将时间戳转换为日期?

来自分类Dev

如何在C#中将每种格式转换为秒

来自分类Dev

如何在C#中将XML片段转换为Dictionary?

来自分类Dev

如何在 Spark 中将 Dataset[Seq[T]] 转换为 Dataset[T]

来自分类Dev

`如何在c#中将ASCII数组转换为文本?

Related 相关文章

  1. 1

    如何在C#中将List <dynamic>转换为List <OurClass>

  2. 2

    如何在C#中将List <BaseClass>强制转换为List <ChildClass>?

  3. 3

    如何在C#中将类型转换为System.Type的类型转换

  4. 4

    如何在C#中将.docx转换为.pdf

  5. 5

    如何在C#中将double转换为dateTime值?

  6. 6

    如何在C#中将数据表转换为锯齿状数组?

  7. 7

    如何在C#中将object [,]转换为数据表

  8. 8

    如何在C ++ / CLI中将C#可为空的枚举转换为int

  9. 9

    如何在C#中将异步的返回类型Task <DataView>转换为DataView

  10. 10

    如何在C#中将vb6'vbFromUnicode'转换为字符串

  11. 11

    如何在C#中将int转换为数字char?

  12. 12

    如何在C#中将void指针转换为struct

  13. 13

    如何在C#中将文本框值转换为double?

  14. 14

    如何在C#中将2D数组转换为2D列表

  15. 15

    如何在C#中将等号“ =”的字符串转换为json

  16. 16

    如何在C#中将Type转换为TEnum

  17. 17

    如何在Spring Boot中将DTO转换为Entity?

  18. 18

    如何在C#中将IEnumerable转换为IList

  19. 19

    如何在C#中将类型转换为System.Type的类型转换

  20. 20

    如何在C#中将整数转换为单词?

  21. 21

    如何在C#中将xml转换为DataTable

  22. 22

    如何在C#中将z坐标转换为角度?

  23. 23

    如何在C#中将Json数组转换为列表

  24. 24

    如何在C#中将整数转换为字符?

  25. 25

    如何在C#中将时间戳转换为日期?

  26. 26

    如何在C#中将每种格式转换为秒

  27. 27

    如何在C#中将XML片段转换为Dictionary?

  28. 28

    如何在 Spark 中将 Dataset[Seq[T]] 转换为 Dataset[T]

  29. 29

    `如何在c#中将ASCII数组转换为文本?

热门标签

归档