0

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

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

我创建了一个名为 lstX 的 RestaurantXPatron 列表,我想将 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 列表的内容。我的问题是,如何将列表的内容放入我的输出中?

4

2 回答 2

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)

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

于 2013-10-27T22:18:58.740 回答
-1

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

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

于 2013-10-27T22:18:38.370 回答