【发布时间】:2014-02-17 12:47:01
【问题描述】:
这是我之前的问题的延续: Linq (GroupBy and Sum) over List<List<string>>
我有一个这样的查询:
var content = new List<List<string>>
{
new List<string>{ "book", "code", "columnToSum" },
new List<string>{ "abc", "1", "10" },
new List<string>{ "abc", "1", "5" },
new List<string>{ "cde", "1", "6" },
};
var headers = content.First();
var result = content.Skip(1)
.GroupBy(s => new { Code = s[headers.IndexOf("code")], Book = s[headers.IndexOf("book")]})
.Select(g => new
{
Book = g.Key.Book,
Code = g.Key.Code,
Total = g.Select(s => int.Parse(s[headers.IndexOf("columnToSum")])).Sum()
});
这很好,但我只是想知道如何处理 columnToSum 为空的情况?因此,例如,这给了我错误“输入字符串的格式不正确”,因为 int.Parse 失败
var content = new List<List<string>>
{
new List<string>{ "book", "code", "columnToSum" },
new List<string>{ "abc", "1", "10" },
new List<string>{ "abc", "1", "" },
new List<string>{ "cde", "1", "6" },
};
如何优雅地处理这种情况?
【问题讨论】:
-
如果可能的话,您应该将您的
List<string>s 转换为适当的数据结构,例如具有string Name、int Code和int? ColumnToSum属性的Book类。