У меня есть следующий код, который стыковой некрасиво, и я хотел бы переписать его с некоторым хорошим LINQ, но я не могу понять:Как переписать этот код в LINQ?
var folders = new List<string>();
string folderResult = "";
foreach (var parallelMeasurement in ParallelMeasurements)
{
var folder = parallelMeasurement.Item1.Substring(0, parallelMeasurement.Item1.IndexOf("."));
if (!folders.Contains(folder))
{
folders.Add(folder);
folderResult += folder + ",";
}
}
folderResult = folderResult.TrimEnd(',');
string valueResult = "";
foreach (var folder in folders)
{
var views = ParallelMeasurements.Where(x => x.Item1.Substring(0, x.Item1.IndexOf(".")) == folder);
var value = views.Sum(x => x.Item2.TotalSeconds);
valueResult += value + ",";
}
valueResult = valueResult.TrimEnd(',');
File.WriteAllText(Paths.ParallelGroupedTrend, $"{folderResult}{Environment.NewLine}{valueResult}");
ParallelMeasurements
является List<Tuple<string, TimeSpan>>
и содержание tuple.Item1 является например:
Actor.ActorUsers
Actor.ActorInformation
User.Edit
Короче говоря, я хочу, чтобы агрегировать измерения на основе первой части строки, содержимое до периода.
'если (folders.Contains (папка)) {folders.Add (папка);' ...? –
@ Томас спасибо, это была прикладом уродливая ошибка там! – Drutten