将值传递给C#中的字典类型参数

时间:2015-08-18 04:31:32

标签: c# .net asp.net-mvc dictionary

我是新词并对词典感兴趣。 我在基础存储库上写了一个方法,如下所示:

public IList<DropDownSelectList> GetDropDownData(string valueColumn, string displayColumn, string orderByColumnName = "", Dictionary<string, object> paramList = null)
{
//do my tasks.....
...

if (paramList != null)
{
   int index = 0;
   args = new object[paramList.Count];
   foreach (var item in paramList)
   {
      whereCondition += " AND " + item.Key + "=@"+ index.ToString();
      args[index] = item.Value;
      index++;
   }
}
..........
}

现在,当我从某个子库中调用该方法时,就像这样:

return base.GetDropDownData("DivisionID", "DivisionName", "DivisionName", null);

然后没关系。

但是当我尝试向参数发送一些值时,它根本不起作用。

我试着吼道:

return base.GetDropDownData("DivisionID", "DivisionName", "DivisionName", "DivisionID",1);

还有:

Contact oContact = new Contact();
return base.GetDropDownData("DivisionID", "DivisionName", "DivisionName", "DivisionID", oContact);

但是我得到了错误:

  

没有重载方法'GetDropDownData'需要5个参数。

先谢谢。

2 个答案:

答案 0 :(得分:1)

替换它:

return base.GetDropDownData("DivisionID", "DivisionName", "DivisionName", "DivisionID",1);

有了这个:

return base.GetDropDownData("DivisionID", "DivisionName", "DivisionName", 
                     new Dictionary<String, object> { { "DivisionID", 1 } });

如果你想要多个参数......

return base.GetDropDownData("DivisionID", "DivisionName", "DivisionName", 
                     new Dictionary<String, object> { 
                         { "DivisionID", 1 }, 
                         { "OfficeID", 3 } 
                     });

等。

答案 1 :(得分:1)

“没有重载方法'GetDropDownData'需要5个参数。”这只是意味着你的方法不能接受4个参数,因为你的定义是4。如果需要发送更多参数,你可以编写另一个与5个参数同名的方法。您还可以在末尾添加一个带默认值的参数,这样如果您使用4个参数调用此方法,它应该自动使用最后一个参数的默认值!