LINQ First()或Single()参数

时间:2013-08-26 04:36:07

标签: c# linq group-by

尝试从CSV文件中获取排序数据。此代码工作正常,但“Side”列是字符串,并且对于一个组是相同的。我无法弄清楚First()方法的Single()应该是什么参数。

    var stuff = from line in File.ReadLines(@"d:\tmp\4.csv").Skip(1)
                    let columns = line.Split(';')
                    select new
                    {
                        Time = columns[0],
                        Side = columns[2],
                        Qty = columns[3],
                        Symbol = columns[4],
                        Price = columns[5],
                    };

        var sorted = from line in stuff
                     group line by new { line.Time, line.Symbol }
                         into category
                         select new {
                             category.Key.Time,
                             category.Key.Symbol, 
                             Qty = category.Sum(p => Int32.Parse(p.Qty)),
                             Price = category.Average(p => double.Parse(p.Price)),
                             Side = ?????? };

1 个答案:

答案 0 :(得分:1)

Single如果发现多条记录会抛出异常,我认为这不是你想要的

First从列表中选择第一条记录,但如果集合为空,则SingleFirst都会抛出“InvalidOperationException”异常。

所以我会在这里使用FirstOrDefault

Side = category.Select(p => p.Side).FirstOrDefault()