2017-01-05 280 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 => 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} 
相关问题