转换清单<object>到一个字符串[,] 2D数组

索卡斯基

知名会员
已加入
2014年3月3日
留言内容
59
编程经验
Beginner
我很难转换一个List对象,它是从数据库中填充的类对象,到目前为止,拥有该对象列表还不错,但是我需要转换其string [,](2D)数组以应用有助于获取数据的方法打印输出。

C#:
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
    lCT = CTKayitlarDonsunBakalim(dateTimePicker1.Value);
    // ==> here i need a method which copies/clones List<object>
}


private List<Maintable.QueryCT_Qty> CTKayitlarDonsunBakalim(DateTime d)
{
    List<Maintable.QueryCT_Qty> lSwap = new List<Maintable.QueryCT_Qty>();
    DateTime PickedDateTime = d.Date;
    DataAccess da = new DataAccess();
    lSwap = da.CheckCTRecords(PickedDateTime);
    return lSwap;
}
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,482
地点
弗吉尼亚州切萨皮克
编程经验
10+
没有神奇的C#语法。您需要创建一个二维字符串数组,然后为每个元素分配值。

在学习C#时,应该已经学会了二维数组的创建和设置元素。您用来学习C#的书或教程是什么?我看到您已经将过去的控制台程序升级为使用WinForms。人们通常在仍在做控制台程序的同时学习变量和数组。

 
Last edited:

索卡斯基

知名会员
已加入
2014年3月3日
留言内容
59
编程经验
Beginner
您对我的进步绝对是正确的,但有时我们所有人都在寻找没有烤好的鸟儿飞进我们的嘴里。但是,在我读完您的回复后,我有一种自己做这种情况的感觉。感谢您的回复
 

索卡斯基

知名会员
已加入
2014年3月3日
留言内容
59
编程经验
Beginner
我就是这样。

C#:
var std = new List<Students>();
std.Add(new Students() { ID = "10", Name = "Karna", Surname = "Basalan", PassMark = "A" });
std.Add(new Students() { ID = "20", Name = "Kendar", Surname = "Nurwidiyanti", PassMark = "A" });

string[,] 数组2 = new 串[2, 4];

for (int i = 0; i <= std.Count-1; i++)
{
    数组2[i, 0] = std.ElementAt(i).ID.ToString();
    数组2[i, 1] = std.ElementAt(i).Name.ToString();
    数组2[i, 2] = std.ElementAt(i).Surname.ToString();
    数组2[i, 3] = std.ElementAt(i).PassMark.ToString();
}
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,482
地点
弗吉尼亚州切萨皮克
编程经验
10+
弄清楚它的好工作。

请参阅以下更清洁的方法:
C#:
var std = new List<Students>();
std.Add(new Students() { ID = "10", Name = "Karna", Surname = "Basalan", PassMark = "A" });
std.Add(new Students() { ID = "20", Name = "Kendar", Surname = "Nurwidiyanti", PassMark = "A" });

string[,] 数组2 = new 串[student.Count, 4];

for (int i = 0; i < std.Count; i++)
{
    var student = std[i];
    数组2[i, 0] = student.ID;
    数组2[i, 1] = student.Name;
    数组2[i, 2] = student.Surname;
    数组2[i, 3] = student.PassMark;
}

Instead of calling ElementAt(), just use the 清单 indexer to write more idiomatic C# code instead of looking like some one translating Java into C# .

随着您在编程过程中的学习进展,学习获取引用或重复访问的对象的副本通常可以帮助下一个阅读代码的人理解它,有时可以帮助编译器生成更好的代码,并且最重要的是,可以最大程度地减少潜在的错别字。

There is no need to call ToString() when the type of the field or variable is already a 串.

for循环条件的变化是使代码更像惯用的C#,C,C ++,Java,其中在编写for循环时,优先选择小于比较而不是小于或等于。
 
Last edited:

索卡斯基

知名会员
已加入
2014年3月3日
留言内容
59
编程经验
Beginner
在这种情况下,有一点很重要,即我们要转换为字符串多维数组的类对象中是否存在int类型或数值类型。如果类对象中存在数字数据类型,则必须使用.ToString()以获得成功的结果。否则编译器不喜欢我们 :)
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,482
地点
弗吉尼亚州切萨皮克
编程经验
10+
对。这就是为什么我说:
There is no need to call ToString() when the type of the field or variable is already a 串.
我指的是来源,而不是目的地。
 
最佳 底部