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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.90488 の関連記事表示

<< 0 >>
■90488  Re[1]: 2つのリストから1つのリストを作成する方法
□投稿者/ 魔界の仮面弁士 -(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; } }
      // 以下略
    }
記事No.90487 のレス /過去ログ156より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -