【问题标题】:How would one access a List<int> as a List<T> object? [duplicate]如何将 List<int> 作为 List<T> 对象访问? [复制]
【发布时间】:2018-06-19 21:08:14
【问题描述】:

为 newb 问题道歉,但我很难理解如何访问通用列表中的整数列表,然后将所有这些信息显示到列表视图 (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...”等.

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: c# winforms listview nested-lists listviewitem


    【解决方案1】:

    您可能正在使用返回类名的Scores.ToString() 方法。您可以尝试:string.Join(", ", Scores)。这将连接所有用 , 分隔的值。

    public string[] ToListViewItem()
    {
        return new string[] {
            First,
            Last,
            ID.ToString(),
            string.Join(", ", Scores)
        };
    }
    

    【讨论】:

    • 谢谢,@J。范朗根!效果很好。
    【解决方案2】:

    这就是Scores.ToString() 返回的内容。

    如果您想显示有用的信息,您需要编写使用您的List&lt;int&gt; 并返回有用信息的代码。

    首先查看string.Join()

    【讨论】:

    • 谢谢@Slaks。感谢您的指导。
    猜你喜欢
    • 1970-01-01
    • 2019-10-03
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多