前提・実現したいこと
C#のLINQを使用して、IDictionary<string, Dictionary<int, string>>のようなデータを取得したいです。
Dictionaryの部分は匿名型になるかもしれません。
目的としてはjavacriptライブラリのComboBoxで、下記のデータ形式が必要なため、あらかじめデータ加工しておきたいことです。
(取得したいデータ)
txt
10: Key: "グループ1" 2 Value: 0: {Key: 1, Value: "TEST1"} 3 1: {Key: 2, Value: "TEST2"}
(Model)
C#
1public class Member { 2 public int Id { get; set; } 3 public string Name { get; set; } 4 public string GroupName { get; set; } 5}
ご教授お願いします。
発生している問題
該当のソースコードでは下記のデータまで取得できますが、グループ化がうまくできなくて困ってます。
(現在のgroupMembersのデータ)
txt
10: Key: "グループ1" 2 Value: {Key: 1, Value: "TEST1"} 31: Key: "グループ1" 4 Value: {Key: 2, Value: "TEST2"}
該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4 5public class Member { 6 public int Id { get; set; } 7 public string Name { get; set; } 8 public string GroupName { get; set; } 9} 10 11public class Test { 12 Test() { 13 IList<Member> members = new List<Member>(); 14 members.Add(new Member() { Id = 1, Name = "TEST1", GroupName = "グループ1" }); 15 members.Add(new Member() { Id = 2, Name = "TEST2", GroupName = "グループ1" }); 16 17 IReadOnlyDictionary<int, string> memberDictionaries = members.ToDictionary( 18 e => e.Id, 19 e => e.Name 20 ); 21 22 var groupMembers = members 23 .GroupJoin(memberDictionaries, a => a.Id, b => b.Key, (a, b) => new { a, b }) 24 .SelectMany(x => x.b.DefaultIfEmpty(), (a, b) => new { 25 Key = a.a.GroupName, 26 Value = b 27 }); 28 } 29}
試したこと
ToLookup等も試してみたがうまく取得できなかった。
補足情報(FW/ツールのバージョンなど)
.NET Framework 4.7.1
Visual Studio Express 2012 for Web
ASP.NET MVC5(C#)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/04 03:23 編集
2020/05/04 03:29
退会済みユーザー
2020/05/04 03:34