功能调用太多了

时间:2012-12-26 20:12:44

标签: c# linq lambda

我编写了以下代码解析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多次使用相同的参数,并在同一个对象上。

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

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

2 个答案:

答案 0 :(得分:7)

是的,您可以在第一个Select中拆分一次,然后将结果传递给第二个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] });

答案 1 :(得分: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]
                             };