如何将 List<int> 作为 List<T> 对象访问?
How would one access a List<int> as a List<T> object?
对于这个新问题深表歉意,但我很难思考如何访问通用列表中的整数列表,然后将所有这些信息显示到列表视图 (winform) 中。这是我目前所拥有的...
}
List<Student> students;
public class Student
{
public string First { get; set; }
public string Last { get; set; }
public List<int> Scores { get; set; }
public int ID { get; set; }
public string[] ToListViewItem()
{
return new string[] {
First,
Last,
ID.ToString(),
Scores.ToString()
};
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
students = new List<Student>
{
new Student {First="Svetlana", Last="Omelchenko", ID=111, Scores= new List<int> {97, 92, 81, 60}},
new Student {First="Claire", Last="O’Donnell", ID=112, Scores= new List<int> {75, 84, 91, 39}},
new Student {First="Sven", Last="Mortensen", ID=113, Scores= new List<int> {88, 94, 65, 91}},
new Student {First="Cesar", Last="Garcia", ID=114, Scores= new List<int> {97, 89, 85, 82}},
new Student {First="Debra", Last="Garcia", ID=115, Scores= new List<int> {35, 72, 91, 70}},
new Student {First="Fadi", Last="Fakhouri", ID=116, Scores= new List<int> {99, 86, 90, 94}},
new Student {First="Hanying", Last="Feng", ID=117, Scores= new List<int> {93, 92, 80, 87}},
new Student {First="Hugo", Last="Garcia", ID=118, Scores= new List<int> {92, 90, 83, 78}},
new Student {First="Lance", Last="Tucker", ID=119, Scores= new List<int> {68, 79, 88, 92}},
new Student {First="Terry", Last="Adams", ID=120, Scores= new List<int> {99, 82, 81, 79}},
new Student {First="Eugene", Last="Zabokritski", ID=121, Scores= new List<int> {96, 85, 91, 60}},
new Student {First="Michael", Last="Tucker", ID=122, Scores= new List<int> {94, 92, 91, 91} }
};
PopulateListView(students);
GetAverageGrade();
}
public void GetAverageGrade()
{
foreach (Student s in students)
{
double avg = s.Scores.Average();
}
}
public void PopulateListView(List<Student> list)
{
listView1.SuspendLayout();
for (int i = 0; i < list.Count; i++)
{
// create a list view item
var lvi = new ListViewItem(list[i].ToListViewItem());
// assign class reference to lvi Tag for later use
lvi.Tag = list[i];
// add to list view
listView1.Items.Add(lvi);
//This adjust the width of 1st column to fit data.
listView1.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
listView1.ResumeLayout();
}
}
}
到目前为止,我能够让我的列表视图的前三列填充姓名和学生 ID,但我在最后一列中得到的只是 "Systems.Collections.Generic...",等等。
非常感谢任何帮助,谢谢。
您可能正在使用 Scores.ToString()
方法,其中 returns 类名。您可以尝试: string.Join(", ", Scores)
代替。这将连接所有用 ,
.
分隔的值
public string[] ToListViewItem()
{
return new string[] {
First,
Last,
ID.ToString(),
string.Join(", ", Scores)
};
}
就是这样 Scores.ToString()
returns.
如果你想显示有用的信息,你需要编写消耗你的 List<int>
和 returns 有用信息的代码。
首先查看 string.Join()
。
对于这个新问题深表歉意,但我很难思考如何访问通用列表中的整数列表,然后将所有这些信息显示到列表视图 (winform) 中。这是我目前所拥有的...
}
List<Student> students;
public class Student
{
public string First { get; set; }
public string Last { get; set; }
public List<int> Scores { get; set; }
public int ID { get; set; }
public string[] ToListViewItem()
{
return new string[] {
First,
Last,
ID.ToString(),
Scores.ToString()
};
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
students = new List<Student>
{
new Student {First="Svetlana", Last="Omelchenko", ID=111, Scores= new List<int> {97, 92, 81, 60}},
new Student {First="Claire", Last="O’Donnell", ID=112, Scores= new List<int> {75, 84, 91, 39}},
new Student {First="Sven", Last="Mortensen", ID=113, Scores= new List<int> {88, 94, 65, 91}},
new Student {First="Cesar", Last="Garcia", ID=114, Scores= new List<int> {97, 89, 85, 82}},
new Student {First="Debra", Last="Garcia", ID=115, Scores= new List<int> {35, 72, 91, 70}},
new Student {First="Fadi", Last="Fakhouri", ID=116, Scores= new List<int> {99, 86, 90, 94}},
new Student {First="Hanying", Last="Feng", ID=117, Scores= new List<int> {93, 92, 80, 87}},
new Student {First="Hugo", Last="Garcia", ID=118, Scores= new List<int> {92, 90, 83, 78}},
new Student {First="Lance", Last="Tucker", ID=119, Scores= new List<int> {68, 79, 88, 92}},
new Student {First="Terry", Last="Adams", ID=120, Scores= new List<int> {99, 82, 81, 79}},
new Student {First="Eugene", Last="Zabokritski", ID=121, Scores= new List<int> {96, 85, 91, 60}},
new Student {First="Michael", Last="Tucker", ID=122, Scores= new List<int> {94, 92, 91, 91} }
};
PopulateListView(students);
GetAverageGrade();
}
public void GetAverageGrade()
{
foreach (Student s in students)
{
double avg = s.Scores.Average();
}
}
public void PopulateListView(List<Student> list)
{
listView1.SuspendLayout();
for (int i = 0; i < list.Count; i++)
{
// create a list view item
var lvi = new ListViewItem(list[i].ToListViewItem());
// assign class reference to lvi Tag for later use
lvi.Tag = list[i];
// add to list view
listView1.Items.Add(lvi);
//This adjust the width of 1st column to fit data.
listView1.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
listView1.ResumeLayout();
}
}
}
到目前为止,我能够让我的列表视图的前三列填充姓名和学生 ID,但我在最后一列中得到的只是 "Systems.Collections.Generic...",等等。
非常感谢任何帮助,谢谢。
您可能正在使用 Scores.ToString()
方法,其中 returns 类名。您可以尝试: string.Join(", ", Scores)
代替。这将连接所有用 ,
.
public string[] ToListViewItem()
{
return new string[] {
First,
Last,
ID.ToString(),
string.Join(", ", Scores)
};
}
就是这样 Scores.ToString()
returns.
如果你想显示有用的信息,你需要编写消耗你的 List<int>
和 returns 有用信息的代码。
首先查看 string.Join()
。