将List中的多个元素添加到数组中

时间:2012-09-18 20:34:10

标签: c# asp.net arrays list arraylist

我有一个包含多个变量的列表,并希望将数据写入文本文件。

class DataFields
{
     public string name{get;set;}
     public int id{get;set;}
     public int age{get;set;}
}

List<DataFields> dfList; 

看起来像

Adam 1234 23
Pete 3841 15
Scot 8435 30

DataFields[] result = dfList.ToArray();
File.WriteAllLines(@"C:\File\TextFile.txt", result);

我希望结果显示在类似于上面列表的文本文件中,但是我无法将列表添加到数组中,然后按顺序显示。有什么想法吗?

2 个答案:

答案 0 :(得分:8)

File.WriteAllLines想要一组字符串。您可以使用LINQ生成一个:

List<DataFields> dfList = new List<DataFields>();
// populate dfList here

var formattedData = 
     dfList
        .OrderBy(df => df.Name)
        .Select(df => string.Format("{0} {1} {2}", df.Name, df.Id, df.Age));

File.WriteAllLines(@"C:\File\TextFile.txt", formattedData);

您应该使用PascalCase作为您的属性名称(Name,Id,Age)。

答案 1 :(得分:0)

你也可以这样做..

List<DataFields> dfList = new List<DataFields>();
    // populate dfList here
    StreamWriter sw = new StreamWriter(@"C:\File\TextFile.txt");

            foreach (DataFields df in dfList)
            {
                sw.WriteLine(df.id+"\t"+df.name+"\t"+df.age);
            }

            sw.Close();

或简单地使用更高效的List的foreach。

dfList.ForEach(df=> sw.WriteLine(df.id + "\t" + df.name + "\t" + df.age));