使用LINQ读取分隔文件

Den*_*ail 1 c# linq .net-4.0

以下LINQ读取分隔文件.目前,它只输出recordId.我希望它输出文件中的所有字段,以便我可以对数据执行一些额外的LINQ操作.例如,我想按记录ID分组,按日期排序,并取(x)个结果.

  1. 我希望返回csv中的所有字段.我是否需要对变量进行decalre并设置使用索引值,就像我对FirstName,LastName和recordId所做的那样?没什么大不了但有更好的方法吗?

  2. 我尝试删除return语句并使用new进行投影,但这不起作用.

有什么建议?

谢谢!

var recipients = File.ReadAllLines(path)
.Select (record => 
{
string[] tokens = record.Split('|');

string FirstName = tokens[2];
string LastName = tokens[4];
string recordId = tokens[13];

return recordId;
}
)
.GroupBy (recordId => {return recordId; } )
.Dump();
Run Code Online (Sandbox Code Playgroud)

Bro*_*ass 5

将您Select()的项目更改为包含所需属性的匿名类型:

.Select (record => 
{
  string[] tokens = record.Split('|');

  string FirstName = tokens[2];
  string LastName = tokens[4];
  string recordId = tokens[13];

  return  new { RecordId = recordId, FirstName, LastName };
}
Run Code Online (Sandbox Code Playgroud)

你也可以重写这个更多的succint:

File.ReadAllLines(path)
    .Select(record  => record.Split('|'))
    .Select(tokens => new { RecordId = tokens[13], FirstName = tokens[2], LastName = tokens[4] })
    .GroupBy(x => x.RecordId)
    .Dump();
Run Code Online (Sandbox Code Playgroud)