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(); } }
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); } } }
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); } } }
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); } } }
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(); } }
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); } }