【C#】メソッド構文、クエリ構文並べてみた【LINQ】
C#機能バージョン対応表作成しました。
こちらの記事も合わせてご覧ください。
※UnityのDebug.Log()機能を利用してコンソールに出力していますが、
System.Console.WriteLine()みたいなものだと思っていただけたら大丈夫です。
Unityエディタからコピーするのが面倒なので、文字列化して出力しています。気にしないでください
以下のページにも類似内容が記載されています。
例1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
var numListA = new List<int> { 2, 1, 0, 5, 4, 3, 8, 7, 6 }; var queryA = numListA.Where(x => x >= 5).Select(x => x); foreach (var item in queryA) { strA += item; strA += ", "; } Debug.Log("strA = " + strA); var numListB = new List<int> { 2, 1, 0, 5, 4, 3, 8, 7, 6 }; var queryB = from a in numListB where a >= 5 select a; foreach (var item in queryB) { strB += item; strB += ", "; } Debug.Log("strB = " + strB); |
結果
1 2 3 |
strA = 5, 8, 7, 6, strB = 5, 8, 7, 6, |
例2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
var ProductList = new[] { new {ProductCode = 1,Name = "おにぎり", Price = 100}, new {ProductCode = 9,Name = "雑誌", Price = 500}, new {ProductCode = 2,Name = "パン", Price = 150}, new {ProductCode = 5,Name = "お菓子", Price = 300}, new {ProductCode = 8,Name = "マンガ", Price = 450}, new {ProductCode = 7,Name = "お肉", Price = 600}, new {ProductCode = 3,Name = "からあげ", Price = 250}, new {ProductCode = 4,Name = "アイス", Price = 200}, }; var queryA = ProductList .Where(x => x.Price <= 300) .OrderBy(x => x.ProductCode) .Select(x => x); foreach (var item in queryA) { strA += item.Name + " " + item.Price + ", "; } Debug.Log("strA = " + strA); var queryB = from x in ProductList where x.Price <= 300 orderby x.ProductCode select x; foreach (var item in queryB) { strB += item.Name + " " + item.Price + ", "; } Debug.Log("strB = " + strB); |
結果
1 2 3 |
strA = おにぎり 100, パン 150, からあげ 250, アイス 200, お菓子 300, strB = おにぎり 100, パン 150, からあげ 250, アイス 200, お菓子 300, |
まとめ
個人的には、クエリ構文の方が見やすくて好きです。
しかしメソッド構文でしかできないことが存在するのでメソッド構文も使います。
今度メソッド構文まとめようと思います。