プログラミングのメモ

プログラミングの学び直し備忘録

C#:コレクション

        static public void コレクション()
        {
            //===================================
            // 宣言
            //===================================
            List<string> sList = new List<string>();

            //===================================
            // 追加
            //===================================
            sList.Add("s1");
            sList.Add("s2");

            int iLen = sList.Count;

            var ret = sList.Select(c => c + "k");   // 戻り値:IEnumerable<T>

            foreach (var item in ret)
            {
                Console.WriteLine(item);
            }

            ret.ToList().ForEach(c => Console.WriteLine(c));

            ret = sList.Where(c => c.Contains("2"));
            ret.ToList().ForEach(c => Console.WriteLine(c));

        }
        /// <summary>
        /// 
        /// </summary>
        static public void コレクション_iLst()
        {
            //===================================
            // 宣言
            //===================================
            List<string> sList = new List<string>();

            //===================================
            // 追加
            //===================================
            sList.Add("s1");
            sList.Add("s2");
            sList.Add("s3");
            sList.Add("s4");
            sList.Add("s5");
            sList.Add("s3");

            // 要素数
            int iLen = sList.Count;

            // INDEX指定
            var ret01 = sList[2];

            for (int i = 0; i < sList.Count; i++)
            {
                Console.WriteLine(sList[i]);
            }

            // foreach
            foreach (var item in sList)
            {
                Console.WriteLine(item);
            }


            // LINQ (戻り値:IEnumerable<T>)
            var ret = sList.Select(c => c + "k");  
            ret.ToList().ForEach(c => Console.WriteLine(c));

            ret = sList.Where(c => c.Contains("2"));
            ret.ToList().ForEach(c => Console.WriteLine(c));

            // LINQ(First,Last:1件だけ返す→対象のデータ型)
            string ret02 = sList.First();
            string ret03 = sList.Last();

            //
            ret = sList.OrderBy(c => c);
            ret = sList.OrderByDescending(c => c);

            string ret04 = sList.Find(c => c == "s9");
            Console.WriteLine(ret04);
        }
        /// <summary>
        /// Dictionar<T,T>
        /// </summary>
        static public void Dictionary()
        {
            //===================================
            // 宣言
            //===================================
            Dictionary<string, string> dicDict = new Dictionary<string,string>();
            var dicDict2 = new Dictionary<string, string> {
                {"key1","Val1" },
                {"key2","Val2" },
                {"key3","Val3" }
            };

            //===================================
            // 追加
            //===================================
            dicDict.Add("Key1", "val1");
            dicDict.Add("Key2", "val2");
            dicDict.Add("Key3", "val3");
            dicDict.Add("Key4", "val4");
            dicDict.Add("Key5", "val5");

            // 要素数
            int iLen = dicDict.Count;

            // Key指定
            var ret01 = dicDict["key3"];

            // foreach
            foreach (var item in dicDict)
            {
                Console.WriteLine(item.Key);
                Console.WriteLine(item.Value);
            }

            //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            var dic = new Dictionary<int, string> {
                { 1, "Eureka"}, { 2, "Nadia"}, { 3, "002"},
              };

            Console.WriteLine($"データ数:{dic.Count}");
            // 出力:データ数:3

            Console.WriteLine(string.Join(", ", dic.Select(kvp => $"{kvp.Key}:{kvp.Value}")));
            // 出力:1:Eureka, 2:Nadia, 3:002

            // ループ変数にKeyValuePairを使う
            foreach (KeyValuePair<int, string> kvp in dic)
            {
                int id = kvp.Key;
                string name = kvp.Value;
                Console.WriteLine($"{id}:{name}");
            }
            // 出力:
            // 1:Eureka
            // 2:Nadia
            // 3:002

            // Dictionaryの内容を表示
            Console.WriteLine(string.Join(", ", dic.Select(kvp => $"{kvp.Key}:{kvp.Value}")));
            // 出力:1:Eureka, 2:Nadia, 3:002

            // キーを取り出して別のコレクションにする
            List<int> idList = dic.Keys.ToList();

            // あらかじめ作っておいたキーのコレクションでforeachループを回す
            foreach (int id in idList)
            {
                string name = dic[id];
                if (name.StartsWith("N"))
                    dic.Remove(id); // データを削除
                else
                    dic[id] = $"{name}[{id}]"; // 値を更新
            }
            Console.WriteLine(string.Join(", ", dic.Select(kvp => $"{kvp.Key}:{kvp.Value}")));

            // 出力:1:Eureka[1], 3:002[3]

        }