我想按日期使用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
答案 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();
}
}
}