永发信息网

怎样把下面的代码转换成VB.NET的。谢谢

答案:2  悬赏:10  手机版
解决时间 2021-02-14 00:21
  • 提问者网友:遮云壑
  • 2021-02-13 17:14
查了好多资料,都是用C#代码编写的方法,如下:
public static IList convertToList(DataTable dt) where T : new()

9 // 定义集合
10 List ts = new List();
11
12 // 获得此模型的类型
13 Type type = typeof(T);
14 //定义一个临时变量
15 string tempName = string.Empty;
16 //遍历DataTable中所有的数据行
17 foreach (DataRow dr in dt.Rows)
18 {
19 T t = new T();
20 // 获得此模型的公共属性
21 PropertyInfo[] propertys = t.GetType().GetProperties();
22 //遍历该对象的所有属性
23 foreach (PropertyInfo pi in propertys)
24 {
25 tempName = pi.Name;//将属性名称赋值给临时变量
26 //检查DataTable是否包含此列(列名==对象的属性名)
27 if (dt.Columns.Contains(tempName))
28 {
29 // 判断此属性是否有Setter
30 if (!pi.CanWrite) continue;//该属性不可写,直接跳出
31 //取值
32 object value = dr[tempName];
33 //如果非空,则赋给对象的属性
34 if (value != DBNull.Value)
35 pi.SetValue(t, value, null);
36 }
37 }
38
39 ts.Add(t);
40 }
41 return ts;
42 }
最佳答案
  • 五星知识达人网友:傲气稳了全场
  • 2021-02-13 17:28
Public Function convertToList(Of T As New)(dt As DataTable) As IList(Of T)
        ' 定义集合
        Dim ts As New List(Of T)
        '定义一个临时变量
        Dim tempName As String = String.Empty
        '遍历DataTable中所有的数据行
        For Each dr As DataRow In dt.Rows
            Dim st As New T()
            ' 获得此模型的公共属性
            Dim properties() As PropertyInfo = st.GetType().GetProperties()
            '遍历该对象的所有属性
            For Each pi As PropertyInfo In properties
                tempName = pi.Name '将属性名称赋值给临时变量
                '检查DataTable是否包含此列(列名==对象的属性名)
                If dt.Columns.Contains(tempName) Then
                    If Not pi.CanWrite Then Exit For
                    '取值
                    Dim value = dr(tempName)
                    '如果非空,则赋给对象的属性
                    If Not value = DBNull.Value Then pi.SetValue(st, value, Nothing)
                End If
            Next
            ts.Add(st)
        Next
        Return ts
    End Function
全部回答
  • 1楼网友:千杯敬自由
  • 2021-02-13 18:28
vb6和vb.net的数据库操作有很大不同,不能简单的语句对语句转换,建议你深入了解vb.net的数据库操作,再做移植
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯