예제 #1
0
        /// <summary>
        /// 移設対象
        /// </summary>
        private void Sample()
        {
#if false
            // --------------------------------------------------
            // 結合
            // --------------------------------------------------
            // Create Sample Data
            var sampleData002 = new DataFactory <SampleData002>().Create();

            // Join (Nullがあると結合できない)
            Console.WriteLine("\nJoin(sampleData001_02, x => x.LinkId, y => y.LinkId, (x, y))の結果を表示します。");
            var sampleData001_02 = sampleData001.Where(x => x != null && x.LinkId != null);
            foreach (var sample in sampleData002.Join(sampleData001_02, x => x.LinkId, y => y.LinkId, (x, y) => new { y.LinkId, x.Comment }))
            {
                Console.WriteLine($"sampleData002.Join(sampleData001_02...) LinkId:{sample.LinkId} Comment : {sample.Comment}");
            }

            // GroupJoin
            Console.WriteLine("\nsampleData002.GroupJoin(sampleData001_02, outer => outer.LinkId...)の結果を表示します。");
            var linkIds = sampleData002.GroupJoin(
                sampleData001_02,
                outer => outer.LinkId,
                inner => inner.LinkId,
                (outer, IdCollection) => new { LinkId = outer.LinkId, Ids = IdCollection });
            foreach (var sample in linkIds)
            {
                Console.WriteLine($"sampleData002.GroupJoin(sampleData001...) LinkId:{sample.LinkId}");
                foreach (var id in sample.Ids)
                {
                    Console.WriteLine($"   Id:{id.Id}");
                }
            }

            // Concat
            Console.WriteLine("\nsampleData002.Concat(sampleData002_02)の結果を表示します。");
            var sampleData002_02 = sampleData002.Select(x =>
            {
                return(new SampleData002 {
                    LinkId = x.LinkId * 2, Comment = x.Comment + " : Modify"
                });
            });
            foreach (var sample in sampleData002.Concat(sampleData002_02))
            {
                Console.WriteLine($"sampleData002.Concat(sampleData002_02) LinkId:{sample.LinkId} Comment:{sample.Comment}");
            }

            // Zip
            foreach (var sample in sampleData002.Zip(sampleData002_02, (outer1, outer2) => outer1.Comment + "+" + outer2.Comment))
            {
                Console.WriteLine($"sampleData002.Zip(sampleData002_02, (outer1, outer2) => outer1.Comment ...) Comment:{sample}");
            }

            // DefaultIfEmpty
            Console.WriteLine("\nsampleData001.DefaultIfEmpty()の結果を表示します。");
            foreach (var sample in sampleData001.DefaultIfEmpty())
            {
                Console.WriteLine($"sampleData001.DefaultIfEmpty() Id:{sample?.Id} Comment:{sample?.LinkId}");
            }

            // --------------------------------------------------
            // 変換
            // --------------------------------------------------
            // OfType
            Console.WriteLine("\nsampleData001.OfType<int>()の結果を表示します。");
            foreach (var sample in sampleData001.Select(x => x?.Id).OfType <int>())
            {
                Console.WriteLine($"sampleData001.Select(x => x?.Id).OfType<int>() Id:{sample}");
            }

            // Cast
            Console.WriteLine("\nsampleData001.Cast<int>()の結果を表示します。");
            try
            {
                foreach (var sample in sampleData001.Where(x => x != null).Select(x => x.LinkId).Cast <string>())
                {
                    Console.WriteLine($" sampleData001...Cast<string>() LinkId(string):{sample}");
                }
            }
            catch
            {
                Console.WriteLine("sampleData.Where(x => x != null)...に、Castできない要素が含まれるので、Exceptionが発生します。");
            }

            // ToArray
            Console.WriteLine("\nsampleData002.Select(x => x.LinkId).ToArray()の結果(型名)を表示します。");
            var sampleData002ToArray = sampleData002.Select(x => x.LinkId).ToArray();
            Console.WriteLine($"Type of sampleData002ToArray : {sampleData002ToArray.GetType().Name}");

            // ToDictionary
            Console.WriteLine("\nsampleData002.ToDictionary()の結果を表示します。");
            foreach (var sample in sampleData001.Where(x => x != null && x.LinkId != null).ToDictionary(x => x.Id, y => y.LinkId))
            {
                Console.WriteLine($"sampleData001.ToDictionary() Key(Id):{sample.Key} Value(LinkId) : {sample.Value}");
            }

            // ToList
            Console.WriteLine("\nsampleData001.ToList()の結果(型名)を表示します。");
            var sampleData001ToList = sampleData002.ToList();
            Console.WriteLine($"Type of sampleData001ToList ; {sampleData001ToList.GetType().Name}");

            // ToLookup
            Console.WriteLine("\nsampleData002.ToLookup()の結果を表示します。");
            foreach (var sample in sampleData002.ToLookup(x => x.LinkId))
            {
                Console.WriteLine($"Key : {sample.Key}");
                foreach (var item in sample)
                {
                    Console.WriteLine($" Value : LinkId : {item.LinkId} Comment : {item.Comment}");
                }
            }

            // ToDo:AsEnumerable
            Console.WriteLine("\nint[] {1,2,3} => AsEnumerable()の結果を表示します。");
            int[] arrayOfInt = new int[] { 1, 2, 3 };
            foreach (var item in arrayOfInt.AsEnumerable())
            {
                Console.WriteLine($"Value : {item}");
            }

            // --------------------------------------------------
            // sampleDataの表示
            // --------------------------------------------------
            // sampleData001の表示
            Console.WriteLine("\nsampleData001を表示します。");
            foreach (var data in sampleData001)
            {
                Console.WriteLine($"sampleData001.Id:{data?.Id} LinkId:{data?.LinkId}");
            }

            // sampleData002の表示
            Console.WriteLine("\nsampleData002を表示します。");
            foreach (var data in sampleData002)
            {
                Console.WriteLine($"sampleData001.Id:{data.LinkId} LinkId:{data.Comment}");
            }
#endif
        }