2014-01-08 64 views
0

我有以下功能我如何使用委託來填充2D列表?

public string StoredProcedure(string StoredProcedureName,List<List<string>> StoredProcedureParameter,string ReturnValue = null) 
{ 
    string functionReturnValue; 
    cmd = new SqlCommand(StoredProcedureName, conniction(true)); 
    cmd.CommandType = CommandType.StoredProcedure; 
    for (int i = 0; i <= StoredProcedureParameter.Count; i++) 
    { 
     cmd.Parameters.AddWithValue(StoredProcedureParameter[0][i], StoredProcedureParameter[1][i]); 
    } 

    int exec_cmd = (int)cmd.ExecuteScalar(); 

    if (ReturnValue != null) 
    { 
     SqlParameter prm = new SqlParameter(ReturnValue, SqlDbType.Int); 
     cmd.Parameters.Add(prm).Direction = ParameterDirection.ReturnValue; 
     functionReturnValue = prm.ToString(); 
    } 
    else 
    { 
     functionReturnValue = exec_cmd.ToString(); 
    } 

    return functionReturnValue; 
} 

,我需要通過2D列表參數StoredProcedureParameter使用委託,也許lambda表達式

+0

Lambda表達式**是一個**代表。 – wudzik

+0

我不明白你在問什麼。 – Thraka

+2

是什麼讓你覺得你需要一個委託?你想解決什麼問題?這聽起來很像[X/Y問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – Blorgbeard

回答

1

做到以下幾點。

  1. 改變你的方法的簽名接受代表:

    public string StoredProcedure(string StoredProcedureName, Func<List<List<string>>> StoredProcedureParameterFunc, string ReturnValue = null) 
    { 
        List<List<string>> StoredProcedureParameter = StoredProcedureParameterFunc(); 
        ... // your original code here 
    } 
    
  2. 調用這樣的方法:

    var result = StoredProcedure("SPName", GetLists, "returnID"); 
    

    哪裏GetLists是返回 「2D」 列表中的新方法字符串,例如:

    private List<List<string>> GetLists() { 
        var result = new List<List<string>>(); 
        ... // fill result here 
        return result; 
    } 
    
+0

如果有可能設置GetLists在行更美麗 爲例,我需要做這樣的VAR結果一些事情= StoredProcedure的(「SPName」 ,委託{... //在這裏填寫結果},「returnID」);謝謝 –