2017-01-05 7 views
1

У меня есть имя, значение пара обе строки хранятся в словаре.Как получить подстроку из строки в C#, где строка имеет порядковые номера?

e.g., 

Name  | Value | 
------------------------- 
Dim1L9  | 10.98 | 
------------------------- 
Dim14L10 | 26.32 | 
------------------------- 
Dim14L11 | 95.25 | 
------------------------- 
Dim1L10  | 9.99 | 

Из этой таблицы я хотел бы получить сумму Dim1 10,98 + 9,99 = 20,97. Как я могу это сделать?

+5

'data.Where (х => x.Key.StartsWith ("Dim1L")) .Sum (x => x.Value) ' – haim770

+0

Отлично. Это работает. – Abe

+0

@ haim770 - ты дал мне новую перспективу. Спасибо. – Abe

ответ

1

Только в случае, если вы хотите получить сумму для всех имен:

var regex = new Regex(@"^[a-zA-Z]+(\d+)L\d+$"); 
var sumByDimension = from kvp in dictionary 
      let match = regex.Match(kvp.Key) 
      where match.Success 
      group kvp by match.Groups[1].Value into g 
      select new 
      { 
       Dimension = g.Key, 
       Sum = g.Sum(kvp => kvp.Value) 
      }; 

Выход:

{ Dimension: "1", Sum: 20.97 } 
{ Dimension: "14", Sum: 121.57} 

 Смежные вопросы

  • Нет связанных вопросов^_^