【问题标题】:Adding a multiple elements from a List to an array将列表中的多个元素添加到数组
【发布时间】:2012-09-11 03:54:49
【问题描述】:

我有一个包含多个变量的列表,并且想将写入文本文件的内容添加到数组中。

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);

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

【问题讨论】:

    标签: c# asp.net arrays list arraylist


    【解决方案1】:

    你也可以这样做..

    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));
    

    【讨论】:

      【解决方案2】:
      var result = dfList.Select(df => String.Format("{0}\t{1}\t{2}", df.name, df.id, df.age);
      

      【讨论】:

        【解决方案3】:

        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 作为您的属性名称(姓名、ID、年龄)。

        【讨论】:

        • 可能需要制表符/逗号分隔。单个空格分隔可能会造成困难,不是吗?
        • 即使是制表符分隔也会造成困难——如果需要更结构化的东西,那么 LINQ to XML 将是一个更好的选择。
        • 如果它只是转储到 Excel,则不会。然后,分隔的 CSV/Tab 可以原生地做到这一点,而无需额外的努力。
        • 是的,如果需要不同的格式,OP 可以更改字符串格式。从描述中看不清楚。
        • 格式将是一个小问题。这非常适合我想要完成的事情。谢谢你们的意见!
        猜你喜欢
        • 2020-08-19
        • 2016-02-29
        • 2021-07-23
        • 1970-01-01
        • 1970-01-01
        • 2015-03-07
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多