以下のようなオブジェクトがありCountsを、FruitsNameでgroupbyし重複するフルーツをまとめて数を合計した結果を取得したいです。
public class CountsByFruits{ public string FruitsName; public List<CountData> Data; } public class CountData{ public string Color; public double Count; }
List<CountsByFruits> Counts = { FruitsName:"りんご", Data:{ Color:"赤", Count:3 }, { Color:"緑", Count:1 } }, { FruitsName:"さくらんぼ", Data:{ Color:"赤", Count:3 }, { Color:"緑", Count:1 }, }, { FruitsName:"りんご", Data:{ Color:"赤", Count:2 }, { Color:"緑", Count:4 } }
●取得したい結果
結果は元々のList<CountsByFruits>の形で取得したいです。 Result = { FruitsName:"りんご", Data:{ Color:"赤", Count:5 }, { Color:"緑", Count:5 } }, { FruitsName:"さくらんぼ", Data:{ Color:"赤", Count:3 }, { Color:"緑", Count:1 }, }
●試して詰まっているところ
var result = Counts.GroupBy(x => x.FruitsName).Select・・
x.Name ? FruitsNameではなくて?
ご指摘ありがとうございます。
FruitsNameの間違えでした。質問の方も修正しました。

List<CountsByFruits> オブジェクトの Counts を「FruitsNameでgroupbyし重複するフルーツをまとめて数を合計した結果」をオリジナルと同じ List<CountsByFruits> 型の Result に投射したいということですか?
オリジナルと違う形でも、同じ形でもどちらでも問題ないです。

> オリジナルと違う形でも、同じ形でもどちらでも問題ないです。
そういうのはダメです。答えてもそれじゃないと言われそうなので。結果をどういう型のオブジェクトにしたいのか、クラス定義を書いてください。
承知しました。結果はオリジナルと同じ型で取得できるようにしたいです。

要件が決まっていて、それに沿ってじっくり考えてこうしたいということを決めてるわけではなさそうですね。それでもいいのですけど、また前のスレッド https://teratail.com/questions/356450 の話と同じようなことになりそうな気がします。気のせいですか?
できればオリジナルと同じ型が良かったのですが、変わってもデータを加工すればいいと考えてしまいさっきのような回答になってしまいました。
今回は、実現したいことを具体的に記載したので大丈夫だと思っています。

回答3件
あなたの回答
tips
プレビュー