2017-01-05 18 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} 
関連する問題