-2

C# に変換する必要がある SQL 関数があります。SQL 関数は、LIKE キーワードとワイルドカード「_」を使用します。同等の C# 関数を作成するにはどうすればよいですか? SQL 関数は次のとおりです。

Create Function [dbo].[fnGetWarehouseByGrade222] 
( 
  @Grade nvarchar(2),
  @Paste nvarchar(500)
) 
Returns varchar(500) 

As 
Begin  
    declare @Return varchar(500)
    if @Grade = '00' or @Grade = '01' or @Grade = '02' or @Grade = '03' or @Grade = '04' 
    begin
    Select @Return = case when @Paste like 'D__G__DG' then '1GD'
                          when @Paste like 'D__G__DP' then '1GD'
                          when @Paste like 'D__G__D_' then '1GO'
                          when @Paste like 'N__G__D_' then '1GN'
                          when @Paste like 'D__G__H_' then '1GH'
                          when @Paste like 'N__G__H_' then '1GM'
                          when @Paste like 'G__G__H_' then '1GG' end                                                               
  RETURN @Return
  end
  RETURN null
End
4

1 に答える 1

3

これはコメントボックスに直接記述しましたが(この関数はコンパイルされない可能性があります)、正規表現を使用する必要があります。これに似たものが機能するはずです:

string GetWarehousByGrade222(string grade, string paste)
{
  if (grade == "00" || grade == "01" || grade == "02" || grade == "03" || grade == "04") {
    if (Regex.IsMatch(paste, "D..G..DG")) return "1GD";
    if (Regex.IsMatch(paste, "D..G..DP")) return "1GD";
    if (Regex.IsMatch(paste, "D..G..D.")) return "1GO";
    // etc...
  }
  return null;
}
于 2013-03-22T01:31:01.660 に答える