3

我编写了以下代码来解析csv文件:

var result = FullFile.Split('\n')
  .Select(s => new 
  { FirstName = s.Split(',')[(int)FirstName.Value],
  SirName = s.Split(',')[(int)sirName.Value],
  garde = s.Split(',')[(int)Grade.Value] });

现在,我Split在同一个对象上多次使用相同参数的函数。

有没有办法继续使用 lambda 表达式,并减少这个函数调用?

欢迎对我的编码提出任何其他意见

4

2 回答 2

7

是的,您可以在 first 中拆分一次Select,然后将结果沿链传递到 second Select,如下所示:

var result = FullFile
    .Split('\n')
    .Select(line => line.Split(','))
    .Select(tt => new 
        { FirstName = tt[(int)FirstName.Value],
          SirName = tt[(int)sirName.Value],
          garde = tt[(int)Grade.Value] });
于 2012-12-26T20:15:26.430 回答
4

尝试这个:

var result = from var s in FullFile.Split('\n')
                  let x = s.Split(',')
                  select new {
                                FirstName = x[(int)FirstName.Value],
                                SirName = x[(int) SirName.Value],
                                Grade = x[(int) Grade.Value]
                             };
于 2012-12-26T20:19:04.460 回答