将有序集合(使用LINQ)输出到列表框中

时间:2019-02-14 17:17:25

标签: c# visual-studio linq

我想按日期使用LINQ订购文本文件,并将所有列输出到列表框中。

例如,输入文件为:

姓名,年龄,出生日期,男性
玛丽,1991年1月28日,假
安妮,1989年6月29日,假
约翰,2000年6月18日,是

类名     {         公共双年龄{设置;}

    public string Name{ get; set; }

    public DateTime Date { get; set; }

    public string Male { get; set; }



public Name()
{

}

public Name(string name, double age, DateTime date, string male)
{
        Course = course;
        Amount = amount;
        Date = date;
        Male = male;
}


}

private IEnumerable<Name> ReadName()
    {
        List<Name> dataCollection = new List<Name>();
        using (var f = new StreamReader(@"R:\Data.txt"))
        {
            string line = string.Empty;
            while ((line = f.ReadLine()) != null)
            {
                var data = line.Split(',');
                dataCollection.Add(new Name(data[0], Convert.ToDouble(data[1]),Convert.ToDateTime(data[2]),  data[3]));
            }
        }
        return dataCollection;
    }

private void btnDOBOrder_Click(object sender, EventArgs e)
        {
            lstByDate.Items.Clear();
            IEnumerable<Name> names = ReadName();
            var DateOrder = name
                            .OrderByDescending(x => x.Date)
                            .ToList();

            lstByDate.DataSource = DateOrder;
        }

姓名年龄DOB男
约翰18 2000/06/07真实
Mary 28 01/01/1991 False
安妮29 06/06/1989错误

列表框中的当前输出为:
Form1.Name
Form1.Name
Form1.Name

3 个答案:

答案 0 :(得分:0)

您是在列表框中编写名称类的字符串表示形式吗?如果是,则只需要重写Name类中的ToString方法即可显示所需的信息

答案 1 :(得分:0)

<xsl:template match="*[@align]"> <xsl:copy> <xsl:apply-templates select="@* except (@style, @align)" /> <xsl:attribute name="style"> <xsl:value-of select="@style" /> <xsl:if test="@style and not(ends-with(@style, ';'))">;</xsl:if> <xsl:apply-templates select="@align" /> </xsl:attribute> <xsl:apply-templates /> </xsl:copy> </xsl:template> 的{​​{1}}个显示集合,这些集合具有控制其显示内容的Text和Value属性。您可以在数据绑定之前将集合投影为匿名类型,然后将DataValueField和DataTextField设置为计算的属性。看起来可能像这样:

ListBox

答案 2 :(得分:0)

尝试ICompare:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication100
{

    class Program
    {
        const string FILENAME = @"c:\temp\test.csv";
        static void Main(string[] args)
        {
            Person person = new Person(FILENAME);
            person.Sort();
        }

    }
    public class Person : IComparable 
    {
        public string Name { get;set;}
        public int Age { get;set;}
        public DateTime DOB { get;set;}
        public string sex { get;set;}

        List<Person> dataCollection = new List<Person>();

        public Person() { }
        public Person(string filename)
        {            
            using (var f = new StreamReader(filename))
            {
                string line = string.Empty;
                int rowCount = 0;
                while ((line = f.ReadLine()) != null)
                {
                    if (++rowCount > 1)
                    {
                        var data = line.Split(',');
                        dataCollection.Add(new Person() { Name = data[0], Age = Convert.ToInt32(data[1]), DOB = Convert.ToDateTime(data[2]), sex = data[3]});
                    }
                }
            }
        }
        public int CompareTo(object obj)
        {
            return this.DOB.CompareTo(((Person)obj).DOB);
        }

        public void Sort()
        {
            dataCollection.Sort();
        }
    }

}