C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■90488 / 1階層)  2つのリストから1つのリストを作成する方法
□投稿者/ 魔界の仮面弁士 (2110回)-(2019/03/14(Thu) 15:18:27)
No90487 (河童 さん) に返信
> uf.day1 = d.taion //?dateが「1」のときに、day1に体温をセットしたいです。

"1" という文字列から day1 プロパティにアクセスしようとすると、
リフレクション頼りになってしまいますね。

この場合は UserInfo クラスに手を加えて、
 uf.day[d.date] = d.taion;
あるいは
 uf[d.date] = d.taion;
の形でアクセスできるよう改修してみては如何でしょう?




private void Form1_Load(object sender, EventArgs e)
{
  #region サンプルデータ
  d_dataList = new List<d_data>
  {
    new d_data { date = "1", user_id = "1", taion = "36"},
    new d_data { date = "2", user_id = "1", taion = "38"},
    new d_data { date = "3", user_id = "1", taion = "39"},
    new d_data { date = "1", user_id = "2", taion = "35"},
    new d_data { date = "2", user_id = "2", taion = "37"},
    new d_data { date = "3", user_id = "2", taion = "36"},
  };
  userList = new List<m_User>
  {
    new m_User { user_id = "1", user_name = "testA", user_kana = null },
    new m_User { user_id = "2", user_name = "testB", user_kana = null },
  };
  #endregion

  // データグリッドのソース作成
  var dictList = userList.ToDictionary(k => k.user_id);
  List<UserInfo> list = d_dataList
    .GroupBy(x => x.user_id, x => new { x.date, x.taion })
    .Select(y => new UserInfo(y.ToDictionary(k => k.date, v => v.taion))
    {
      user_id = dictList[y.Key].user_id,
      user_name = dictList[y.Key].user_name,
      user_kana = dictList[y.Key].user_kana
    }).ToList();

  // ソースセット
  this.dgvRiyojoho.DataSource = list;
}


public class UserInfo
{
  private readonly Dictionary<string, string> days;
  public UserInfo() { this.days = new Dictionary<string, string>(); }
  public UserInfo(IDictionary<string, string> days) { this.days = new Dictionary<string, string>(days); }
  private string getDay(string d) { return days.ContainsKey(d) ? days[d] : null; }

  public string user_id { get; set; }
  public string user_name { get; set; }
  public string user_kana { get; set; }

  public string day1 { get { return getDay("1"); } set { days["1"] = value; } }
  public string day2 { get { return getDay("2"); } set { days["2"] = value; } }
  public string day3 { get { return getDay("3"); } set { days["3"] = value; } }
  public string day4 { get { return getDay("4"); } set { days["4"] = value; } }
  // 以下略
}
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←2つのリストから1つのリストを作成する方法 /河童 →Re[2]: 2つのリストから1つのリストを作成する方法 /魔界の仮面弁士
 
上記関連ツリー

2つのリストから1つのリストを作成する方法 / 河童 (19/03/14(Thu) 13:18) #90487
2つのリストから1つのリストを作成する方法 / 魔界の仮面弁士 (19/03/14(Thu) 15:18) #90488 ←Now
  └ Re[2]: 2つのリストから1つのリストを作成する方法 / 魔界の仮面弁士 (19/03/14(Thu) 15:54) #90489
    └ Re[3]: 2つのリストから1つのリストを作成する方法 / 河童 (19/03/14(Thu) 16:36) #90490
      └ Re[4]: 2つのリストから1つのリストを作成する方法 / 魔界の仮面弁士 (19/03/14(Thu) 17:18) #90491
        └ Re[5]: 2つのリストから1つのリストを作成する方法 / 河童 (19/03/18(Mon) 15:02) #90530 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信