まず、System.Linq 名前空間がインポートされているかチェックしよう。
u sing System.Linq;
また、System.Linq 名前空間は、System.Core アセンブリ (System.Core.dll) に含まれているそうだ。
System.Linq 名前空間 - msdn
http://msdn.microsoft.com/ja-jp/library/vstudio/system.linq.aspx
u sing System.Linq;
private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == (Keys.Control | Keys.C)) { // Ctrl + C toolStripStatusLabel1.Text = "Ctrl + C が押されました。"; } else if (e.KeyData == (Keys.Control | Keys.V)) { // Ctrl + V toolStripStatusLabel1.Text = "Ctrl + V が押されました。"; } }
var input = " I'd like to have some orange juice."; var fruits = new List{ "apple", "orange", "banana", }; var result1 = fruits.Contains(input); Debug.WriteLine(result1); var result2 = fruits.Exists(w => input.Contains(w)); Debug.WriteLine(result2); var result3 = false; foreach (var x in fruits) { if (input.Contains(x)) { result3 = true; break; } } Debug.WriteLine(result3); // 結果 // result1 = false // result2 = true // result3 = true
class Program { enum MyEnum { a = 0, b, c } private const int loop = 10000000; static bool IsDefined(MyEnum myEnum) { var b = false; switch (myEnum) { case MyEnum.a: case MyEnum.b: case MyEnum.c: b = true; break; } return b; } static void Main(string[] args) { var sw = new Stopwatch(); // Enum.IsDefined sw.Start(); for (int i = 0; i < loop; ++i) { Enum.IsDefined(typeof(MyEnum), 0); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); // 泥臭い ? やり方 sw.Reset(); sw.Start(); for (int i = 0; i < loop; ++i) { IsDefined((MyEnum)0); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); // TryParse sw.Reset(); sw.Start(); for (int i = 0; i < loop; ++i) { var myEnum = new MyEnum(); var b = Enum.TryParse("0", out myEnum); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); // 強引に LINQ を使う sw.Reset(); sw.Start(); for (int i = 0; i < loop; ++i) { Enum.GetValues(typeof(MyEnum)).Castあとは、IsDefined のパフォーマンスが悪いという話をよく目にするが、実際はそれほど問題になるようなことはないと思う。それならソースの見通しを良くしておいた方がいいかな、というのが持論。().Contains((MyEnum)0); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); /* * 2544 * 126 * 4603 * 26415 */ } }
比較演算子 | 意味 | |
-eq | 等しい | == |
-ne | 等しくない | != |
-gt | より大きい | > |
-lt | より小さい | < |
-ge | 以上 | >= |
-le | 以下 | <= |
-like | あいまい (ワイルドカードは 「*」) | |
-nolike | あいまい (ワイルドカードは 「*」) |