Пример #1
0
 static void Main(string[] args)
 {
     using (var context = new SolarSystemContext())
     {
         string planet = "木星";
         Console.WriteLine("{0}の衛星:", planet);
         var query = from m in context.Moons
                     where m.Planet.Name == planet
                     select m;
         foreach (var m in query)
         {
             Console.Write("{0}({1}km),", m.Name, m.Radius);
         }
         Console.WriteLine();
         int year = 1610;
         //Allメソッド:クエリ結果がすべてが引数の条件を満たすときtrue
         if (query.All(m => m.DiscoveryYear == year))
         {
             Console.WriteLine(
                 "これらの衛星はすべて{0}年に発見されました。", year);
         }
         int radius = 2500;
         //Anyメソッド:クエリ結果の1つ以上が引数の条件を満たすときtrue
         if (query.Any(m => m.Radius > radius))
         {
             Console.WriteLine(
                 "これらの衛星の中に平均半径が{0}kmを"
                 + "上回るものがあります。", radius);
         }
     }
 }
        static void Main(string[] args)
        {
            using (var context = new SolarSystemContext())
            {
                Console.WriteLine("名前の長さが短い順で、"
                                  + "同じなら軌道半径の大きい順に表示します");
                //クエリ式ではorderbyを使用
                //並べ替えに使う列が複数の場合カンマ区切り
                //降順にする場合 descendingを付加
                var moons = from m in context.Moons
                            orderby m.Name.Length,
                    m.SemiMajorAxis descending
                select m;
                //メソッド式
                //並べ替えに使う列が複数の場合、
                //2つ目以降の列はThenByかThenByDescendingを使用
                //var moons = context.Moons
                //            .OrderBy(m => m.Name.Length)
                //            .ThenByDescending(m => m.SemiMajorAxis);

                foreach (var moon in moons)
                {
                    Console.WriteLine(
                        "{0}(名前文字列長={1},平均軌道半径={2}km)",
                        moon.Name, moon.Name.Length, moon.SemiMajorAxis);
                }
                Console.WriteLine();
            }
        }
 static void Main(string[] args)
 {
     using (var context = new SolarSystemContext())
     {
         //半径の降順に並べてFirstメソッドで最初の要素を取得
         var  query = context.Moons.OrderByDescending(m => m.Radius);
         Moon first = query.First();
         Console.WriteLine("登録されている衛星の中で" +
                           "最大の半径持つのは{0}({1}km)です。",
                           first.Name, first.Radius);
         //Takeメソッドの使用
         Console.WriteLine("登録されている衛星を半径が大きい順に5つ");
         var top5 = query.Take(5);
         foreach (var moon in top5)
         {
             Console.Write("{0},", moon.Name);
         }
         Console.WriteLine();
         //Skipメソッドの使用
         Console.WriteLine("半径の大きさが大きい6位から10位を表示");
         var rem = query.Take(10).Skip(5);
         foreach (var moon in rem)
         {
             Console.Write("{0},", moon.Name);
         }
         Console.WriteLine();
     }
 }
Пример #4
0
        static void Main(string[] args)
        {
            using (var context = new SolarSystemContext())
            {
                //Averageメソッドの使用
                var average = context.Planets.Average(p => p.SemiMajorAxis);
                Console.WriteLine(
                    "登録されている惑星の平均軌道半径は{0}AUです。", average);

                //Countメソッドの使用
                var query = from p in context.Planets
                            select new { Name       = p.Name,
                                         NumOfMoons = p.Moons.Count() };
                foreach (var planetInfo in query)
                {
                    Console.WriteLine(
                        "{0}系には{1}個の衛星が登録されています。",
                        planetInfo.Name, planetInfo.NumOfMoons);
                }
                //Sumメソッドの使用
                Console.WriteLine("合計:{0}の衛星が登録されています。",
                                  query.Sum(x => x.NumOfMoons));
                //Maxメソッドの使用
                var max = context.Moons.Max(p => p.Radius);
                Console.WriteLine(
                    "登録されている衛星の中で最大の半径は{0}kmです", max);
            }
        }
 static void Main(string[] args)
 {
     using (var context = new SolarSystemContext())
     {
         int radius = 1000;
         //半径1000km以上の衛星の名前を取得するクエリ
         var bigMoonNames = from m in context.Moons
                            where m.Radius > radius
                            select m.Name;
         string theMoonName = "月";
         //上記クエリの結果に「月」が含まれていればtrue
         if (bigMoonNames.Contains(theMoonName))
         {
             Console.WriteLine(
                 "{0}は半径{1}km以上の衛星に含まれています。",
                 theMoonName, radius);
         }
     }
 }
Пример #6
0
        static void Main(string[] args)
        {
            using (var context = new SolarSystemContext())
            {
                //メソッド式
                var moons = context.Moons.Where(m => m.Radius > 1000);
                ////クエリ式
                //var moons = from m in context.Moons
                //            where m.Radius > 1000
                //            select m;

                Console.WriteLine("平均半径が1000km超えている衛星:");
                foreach (var moon in moons)
                {
                    Console.Write("{0}(平均半径={1}km),",
                                  moon.Name, moon.Radius);
                }
            }
        }
Пример #7
0
        static void Main(string[] args)
        {
            using (var context = new SolarSystemContext())
            {
                //クエリ式
                var query = from p in context.Planets
                            join m in context.Moons on p equals m.Planet
                            select new { Name = m.Name, ParentName = p.Name };
                ////メソッド式
                //var query = context.Planets
                //    .Join(context.Moons, p => p, m => m.Planet,
                //    (p, m) => new { Name = m.Name, ParentName = p.Name });

                foreach (var moon in query)
                {
                    Console.WriteLine("{0}は{1}の衛星",
                                      moon.Name, moon.ParentName);
                }
            }
        }
Пример #8
0
        static void Main(string[] args)
        {
            using (var context = new SolarSystemContext())
            {
                //クエリ式
                var moonNames = from p in context.Planets
                                from m in p.Moons
                                select new { Name = m.Name, Parent = p.Name };
                ////メソッド式
                //var moonNames = context.Planets
                //   .SelectMany(p => p.Moons
                //   .Select(m => new { Name = m.Name, Parent = p.Name }));

                foreach (var item in moonNames)
                {
                    Console.WriteLine("{0}は{1}を衛星としている。",
                                      item.Parent, item.Name);
                }
            }
        }
 static void Main(string[] args)
 {
     using (var context = new SolarSystemContext())
     {
         var query = from m in context.Moons
                     select m.DiscoveryYear;
         Console.WriteLine("登録されている衛星の発見年:");
         foreach (var y in query)
         {
             Console.Write("{0},", y);
         }
         Console.WriteLine();
         Console.WriteLine("重複を取り除くと");
         var distinctQuery = query.Distinct();
         foreach (var y in distinctQuery)
         {
             Console.Write("{0},", y);
         }
         Console.WriteLine();
     }
 }
Пример #10
0
        static void Main(string[] args)
        {
            using (var context = new SolarSystemContext())
            {
                //クエリ式
                var query = from m in context.Moons
                            group m by m.Planet;
                //メソッド式
                //var query = context.Moons.GroupBy(m=>m.Planet);

                foreach (var g in query)
                {
                    //グループ化のキーをKeyプロパティで参照する
                    Console.WriteLine("{0}の衛星グループ:", g.Key.Name);
                    //グループをコレクションとして要素をforeachで表示
                    foreach (var moon in g)
                    {
                        Console.Write("{0},", moon.Name);
                    }
                    Console.WriteLine();
                }
            }
        }
        static void Main(string[] args)
        {
            using (var context = new SolarSystemContext())
            {
                var listOfPlanets = from p in context.Planets
                                    orderby p.SemiMajorAxis
                                    select p.Name.Substring(0, 1);

                //配列にする
                string[] ArrayOfPlanetNames
                    = listOfPlanets.ToArray <string>();
                //クエリを変更する(ArrayOfPlanetNamesは影響しない)
                listOfPlanets = from p in context.Planets
                                orderby p.SemiMajorAxis
                                select p.Name;
                //ジェネリックリストにする
                List <string> listOfPlanetNames
                    = listOfPlanets.ToList <string>();
                Console.Write("ArrayOfPlanetNames = ");

                //配列ArrayOfPlanetNamesの中身を表示
                Array.ForEach <string>(
                    ArrayOfPlanetNames,
                    name => Console.Write("{0},", name));
                Console.WriteLine();
                Console.Write("listOfPlanetNames = ");

                //ジェネリックリストlistOfPlanetNamesの中身を表示
                listOfPlanetNames.ForEach(
                    name => Console.Write("{0},", name));
                Console.WriteLine();
                var listOfMoons = context.Moons.Where(
                    m => m.Planet.Name == "木星");

                //辞書にする
                Dictionary <string, int> dictionary =
                    listOfMoons.ToDictionary <Moon, string, int>(
                        m => m.Name, m => m.Radius);
                string moon1 = "ガニメデ";
                Console.WriteLine("{0}の半径は{1}km",
                                  moon1, dictionary[moon1]);

                //キーに対して複数の値が対応する辞書にする
                ILookup <int?, string> lookup =
                    context.Moons.ToLookup <Moon, int?, string>(
                        m => m.DiscoveryYear,
                        m => m.Name
                        );
                foreach (var group in lookup)
                {
                    if (group.Key != null)
                    {
                        Console.Write("{0}年発見の衛星:", group.Key);
                        foreach (var m in group)
                        {
                            Console.Write("{0},", m);
                        }
                        Console.WriteLine();
                    }
                }
            }
        }
 static void Main(string[] args)
 {
     using (var context = new SolarSystemContext())
     {
         //Planetオブジェクトの生成
         var mercury = new Planet {
             Name          = "水星",
             SemiMajorAxis = 0.3871f
         };
         var venus = new Planet {
             Name          = "金星",
             SemiMajorAxis = 0.72333f
         };
         var earth = new Planet {
             Name          = "地球",
             SemiMajorAxis = 1f
         };
         var mars = new Planet {
             Name          = "火星",
             SemiMajorAxis = 1.52366f
         };
         var jupiter = new Planet {
             Name          = "木星",
             SemiMajorAxis = 5.20336f
         };
         var saturn = new Planet {
             Name          = "土星",
             SemiMajorAxis = 9.53707f
         };
         var uranus = new Planet {
             Name          = "天王星",
             SemiMajorAxis = 19.19138f
         };
         var neptune = new Planet {
             Name          = "海王星",
             SemiMajorAxis = 30.06896f
         };
         var pluto = new Planet {
             Name          = "冥王星",
             SemiMajorAxis = 39.445f
         };
         //Planetオブジェクトの追加
         context.Planets.Add(mercury);
         context.Planets.Add(venus);
         context.Planets.Add(earth);
         context.Planets.Add(mars);
         context.Planets.Add(jupiter);
         context.Planets.Add(saturn);
         context.Planets.Add(uranus);
         context.Planets.Add(neptune);
         context.Planets.Add(pluto);
         //Moonオブジェクトの生成と追加
         context.Moons.Add(new Moon
         {
             Name          = "月",
             Planet        = earth,
             Radius        = 1738,
             SemiMajorAxis = 384400
         });
         context.Moons.Add(new Moon
         {
             Name          = "ダイモス",
             Planet        = mars,
             Radius        = 6,
             SemiMajorAxis = 23400,
             DiscoveryYear = 1877
         });
         context.Moons.Add(new Moon {
             Name = "フォボス", Planet = mars, Radius = 11, SemiMajorAxis = 9387, DiscoveryYear = 1877
         });
         context.Moons.Add(new Moon {
             Name = "イオ", Planet = jupiter, Radius = 1821, SemiMajorAxis = 421700, DiscoveryYear = 1610
         });
         context.Moons.Add(new Moon {
             Name = "エウロパ", Planet = jupiter, Radius = 1565, SemiMajorAxis = 671034, DiscoveryYear = 1610
         });
         context.Moons.Add(new Moon {
             Name = "ガニメデ", Planet = jupiter, Radius = 2634, SemiMajorAxis = 1070412, DiscoveryYear = 1610
         });
         context.Moons.Add(new Moon {
             Name = "カリスト", Planet = jupiter, Radius = 2403, SemiMajorAxis = 1882709, DiscoveryYear = 1610
         });
         context.Moons.Add(new Moon {
             Name = "ミマス", Planet = saturn, Radius = 199, SemiMajorAxis = 185404, DiscoveryYear = 1789
         });
         context.Moons.Add(new Moon {
             Name = "エンケラドゥス", Planet = saturn, Radius = 249, SemiMajorAxis = 237950, DiscoveryYear = 1789
         });
         context.Moons.Add(new Moon {
             Name = "テティス", Planet = saturn, Radius = 530, SemiMajorAxis = 294619, DiscoveryYear = 1684
         });
         context.Moons.Add(new Moon {
             Name = "ディオネ", Planet = saturn, Radius = 560, SemiMajorAxis = 377396, DiscoveryYear = 1684
         });
         context.Moons.Add(new Moon {
             Name = "レア", Planet = saturn, Radius = 764, SemiMajorAxis = 527180, DiscoveryYear = 1672
         });
         context.Moons.Add(new Moon {
             Name = "タイタン", Planet = saturn, Radius = 2575, SemiMajorAxis = 1221930, DiscoveryYear = 1655
         });
         context.Moons.Add(new Moon {
             Name = "ヒペリオン", Planet = saturn, Radius = 143, SemiMajorAxis = 1481010, DiscoveryYear = 1848
         });
         context.Moons.Add(new Moon {
             Name = "イアペトゥス", Planet = saturn, Radius = 718, SemiMajorAxis = 3560820, DiscoveryYear = 1671
         });
         context.Moons.Add(new Moon {
             Name = "フェーベ", Planet = saturn, Radius = 110, SemiMajorAxis = 12869700, DiscoveryYear = 1899
         });
         context.Moons.Add(new Moon {
             Name = "ミランダ", Planet = uranus, Radius = 236, SemiMajorAxis = 129390, DiscoveryYear = 1948
         });
         context.Moons.Add(new Moon {
             Name = "アリエル", Planet = uranus, Radius = 579, SemiMajorAxis = 191020, DiscoveryYear = 1851
         });
         context.Moons.Add(new Moon {
             Name = "ウンブリエル", Planet = uranus, Radius = 585, SemiMajorAxis = 266300, DiscoveryYear = 1851
         });
         context.Moons.Add(new Moon {
             Name = "チタニア", Planet = uranus, Radius = 789, SemiMajorAxis = 435910, DiscoveryYear = 1787
         });
         context.Moons.Add(new Moon {
             Name = "オベロン", Planet = uranus, Radius = 761, SemiMajorAxis = 583520, DiscoveryYear = 1787
         });
         context.Moons.Add(new Moon {
             Name = "トリトン", Planet = neptune, Radius = 1352, SemiMajorAxis = 354800, DiscoveryYear = 1846
         });
         context.Moons.Add(new Moon {
             Name = "ネレイド", Planet = neptune, Radius = 170, SemiMajorAxis = 5513400, DiscoveryYear = 1949
         });
         context.Moons.Add(new Moon {
             Name = "カロン", Planet = pluto, Radius = 635, SemiMajorAxis = 19571, DiscoveryYear = 1978
         });
         //データベースへの保存
         int num = context.SaveChanges();
         Console.WriteLine("データベースに保存しました。");
         Console.WriteLine("変更行数:\t{0}", num);
     }
 }