雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

SQL の In 句の様な事を VB/C# で(ジェネリック編)

元ネタ:SQL の In 句の様な事を VB/C# で
……ただ単に String → T 化しただけですが。

VB

Imports System.Runtime.CompilerServices

Module GenericExtensions
  <Extension()> _
  Public Function [In](Of T)(ByVal str As T, ParamArray ByVal params As T()) As Boolean
    Return params.Contains(str)
  End Function
End Module

Module Foo
  Sub Main()
    Dim data1 As String = "peach"

    If data1.In("banana", "melon", "peach") Then
      Console.WriteLine("見つかったヨ!")
    Else
      Console.WriteLine("入ってないヨ!")
    End If

    Dim data2 As Integer = 50

    If data2.In(4, 7, 9, 64) Then
      Console.WriteLine("見つかったヨ!")
    Else
      Console.WriteLine("入ってないヨ!")
    End If

  End Sub
End Module

C#

using System;
using System.Linq;

public static class GenericExtensions {
  public static bool In<T>(this T str, params T[] param) {
    return param.Contains(str);
  }
}

class Foo {
  static void Main() {
    var data1 = "peach";
    if (data1.In("banana", "melon", "peach")) {
      Console.WriteLine("見つかったヨ!");
    } else {
      Console.WriteLine("入ってないヨ!");
    }

    var data2 = 50;
    if (data2.In(4, 7, 9, 64)) {
      Console.WriteLine("見つかったヨ!");
    } else {
      Console.WriteLine("入ってないヨ!");
    }
  }
}