1

文字列の配列を LINQ ストアド プロシージャに渡す方法を教えてください。

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

エラー: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 を変更する必要はありません。

4

1 に答える 1

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 配列を要求しない限り、マルチパラメーター メソッドに配列を渡すことはできません。

于 2012-05-01T16:26:29.127 に答える