如何将列表中的内容打印到文本文件中?

时间:2013-10-27 22:15:19

标签: c# list io

我有餐馆数据,我正在尝试分析谁访问了特定的餐厅X.数据具有以下结构:

public class RestaurantXPatrons
{
    public String PatronName { get; set;}
    public List <strings> DateofVisits = new List <strings>();
}

我创建了一个名为lstX的RestaurantXPatrons列表,我想将lstX输出到制表符分隔的文本文件(以便稍后在Excel中查看)。所以这是我的输出代码:

var output = lstX.Select ( x => x.PatronName + "\t" + x.DateofVisits );
string filepath = @"C:\data.txt";
System.IO.File.WriteAllLines(filepath, output);

当我在Excel或记事本中查看结果时,我看到“System.Collections.Generic.List`1 [System.String] “应该有餐厅X的每个赞助人的DateofVisits列表的内容。我的问题是,如何将列表的内容输入到我的输出中?

2 个答案:

答案 0 :(得分:3)

您需要执行x.DateOfVisits.FirstOrDefault()之类的操作(以获取第一个实例)或将列表展平为字符串,如:String.Join("; ", x.DateOfVisits)

或者,如果您想要执行以下操作:

Paul    01/01/2013
Paul    01/02/2013
Sally   01/01/2013

你可以做到

from x in listX
group x by new { x.PatronName, x.DateOfVisit } into g
select new String(g.Key.PatronName + "\t" + g.Key.DateOfVisit)

...没有任何我可以测试的东西,所以这一切都是“盲目”完成的 - 希望能让你走上正轨。

答案 1 :(得分:-1)

您需要遍历集合(输出变量),然后将它们写入StringBuilder,或者使用StreamWriter对象上的WriteLine将它们直接写入磁盘。

当您将鼠标悬停在var变量上时,您将看到它是Select方法(LINQ扩展方法)返回的集合类型。你需要迭代它并逐行编写。