怎样把下面的代码转换成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的数据库操作,再做移植
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯