2012-05-01 7 views
1

文字列をLINQストアドプロシージャに渡す処理方法を教えてもらえますか?文字列の配列をLINQに渡すストアドプロシージャ

storedProcは、既存のsprocをdbmlページにドラッグすることによって作成されました。 storedProcは、私がGetStringParams()の値を決定する3つ(または任意の数)のパラメータをとります。

エラー:事前にNo overload for storedProc takes 1 argument

DataClassDataContext db = new DataClassDataContext(); 
//storedProc takes 3 params 
gridview.DataSource = db.storedProc(GetStringParams()); 
gridview.DataBind(); 

private string[] GetStringParams() 
{ 
    string[] params = new string[3];  
    //Perform some logic here to determine which params to pass 
    if (somethingIsTrue) 
     params = new string[] { "param1", "param2", "param3" }; 
    else if (somethingElseIsTrue) 
     params = new string[] { "param1", "param2", "" }; 
    else 
     params = new string[] { "", "", "" }; 
    return params; 
} 

感謝。私はこの質問を検索しましたが、私が探していたものを正確に見つけることができませんでした。好ましくは、sprocを変更する必要はありません。

答えて

1
DataClassDataContext db = new DataClassDataContext(); 
//storedProc takes 3 params 
string[] param = GetStringParams(); 
gridview.DataSource = db.storedProc(param[0], param[1], param[2]); 
gridview.DataBind(); 

private string[] GetStringParams() 
{ 
    //Perform some logic here to determine which params to pass 
    if (somethingIsTrue) 
     return new string[] { "param1", "param2", "param3" }; 
    else if (somethingElseIsTrue) 
     return new string[] { "param1", "param2", "" }; 
    else 
     return new string[] { "", "", "" }; 
} 

マルチパラメータメソッドに配列を渡すことはできません。ただし、メソッドがparams配列を要求しない限り、配列を渡すことはできません。

+0

ありがとう! –

関連する問題