如何在Linq中格式化字符串?

时间:2012-08-13 12:48:39

标签: c# linq

我有数组字符串格式(hh.mm) 如何总和? 我使用扩展程序:

static class SumExtensions
{
    public static String Sum<T>(this IEnumerable<T> source, Func<T, String> selector)
    {
        return source.Select(selector).Aggregate((x, y) => x + y);
    }
}

但我不明白解析字符串和求和的位置

2 个答案:

答案 0 :(得分:3)

首先,您需要将string转换为TimeSpan表示。 这是必要的,因为TimeSpan表示允许对时间间隔执行算术运算。

string[] timeSpanStrings = new[]
    {
        "01.00", "02.00"
    };

var timeSpans = timeSpanStrings.Select(t => TimeSpan.ParseExact(t, @"hh\.mm", CultureInfo.InvariantCulture));
var sumTimeSpan = timeSpans.Aggregate((t1, t2) => t1.Add(t2));

变量sumTimeSpan包含结果。

答案 1 :(得分:0)

您应首先更改数据结构,从String更改为TimeSpan

然后你可以简单地使用函数TimeSpan#add(Timespan)来对数组中的值求和。