2012-02-11 5 views
2

Iは、構造体の配列を有する:どのようにvb.netの構造の配列の類似した要素を合計するには?

Public Structure emp 
    Public empName As String 
    Public empAge As Int32 
    Public empsal As Int32 ' salary 
End Structure 

30素子と上記構造体の配列。私はemp.empName & emp.empAgeが等しいemp要素のうちempsalを合計したいと思います。

ex。結果は(テスト、20000)および(test12,10000)になるように、これを行うことができますどのように

emp(0).empName = "test" 
emp(0).empAge = 32 
emp(0).empsal = 10000 

emp(1).empName = "test" 
emp(1).empAge = 32 
emp(1).empsal = 10000 

emp(2).empName = "test12" 
emp(2).empAge = 32 
emp(2).empsal = 10000 

? NET 3.5

+0

感謝。 –

答えて

4

EDITを使用

は:キーの年齢を含むようにサンプルを編集し、empアレイで終わるします。

絶対に。これはLINQを参考にしてください。基本的にグループにという名前と年齢で、そしての合計での給与を計算します。 C#では、あなたが何か書きたい:

var query = employees.GroupBy 
    (x => new { x.empName, x.empAge }, 
     x => x.empSal, 
     (key, salaries) => new emp { empName = key.empName, 
            empAge = key.empAge, 
            empSalary = salaries.Sum() }) 
var array = query.ToArray(); 

を私はこのようなものになるだろうVBでを考える

Dim query = employees.GroupBy(_ 
    Function(x) New With { Key .Name = x.empName, Key .Age = x.empAge }, _ 
    Function(x) x.empSal, _ 
    Function(k, salaries) New Emp With _ 
     { .empName = k.Name, .empAge = k.Age, .empSalary = salaries.Sum() }_ 
    ) 
Dim array = query.ToArray() 

詳細はGroupBy documentationを参照してください。さておき、私が推薦するよう

  • があなたのタイプにそれクラスではなく構造を作る.NETの命名規則
  • を次の充実名前を与える(それはのように、実際には単一の値ではありませんそれらはすべて
  • 後、すでに従業員のタイプの一部です - 代わりにフィールド/プロパティから empプレフィックスを削除する公共分野
  • の性質を利用しint
  • VBで

    var query= from e in employees 
        group e by new {e.empName, e.empAge} into g 
        select new {Name=g.Key, Value=g.Sum(x=> x.empSal)}; 
    

    (Aコンバータあたり):名前と年齢によってあなたがC#で、次のような何かを行うことができます

+0

'機能(名前、給与)'それは何ですか? –

+0

これらの '(test、20000)と(test12,10000)'の値をemp型の新しい配列に格納します。これを達成する方法。 –

+0

私はあなたがこの点を逃していると思う: - **上記の構造の配列は30要素です。私はemp.empNameとemp.empAgeが等しいemp要素のempsalを合計したいと思っています** –

0

グルーピングこの細かい編集用

Dim query= From g In From e In employeesGroup e By New From { _ 
    e.empName, _ 
    e.empAge _ 
}New With { _ 
    Key .Name = g.Key, _ 
    Key .Value = g.Sum(Function(x) x.empSal) _ 
} 
関連する問題