在函数中一起传递多个键和值的最佳方法?

问题描述

我有点卡在这里我有一个由第三方设计的复杂 API,用于使用自定义搜索条件检索用户和业务数据。搜索条件语法和格式不相关,但我必须传递多个键和相应的值。我需要帮助创建函数

目前我的界面中有这个功能

Response GetUser(
        List<string> keys,List<string> values,List<string> fieldsToReturn= null
        );

传递多个键和值的最佳方法是什么,它们可以绑定/映射在一起?作为一个参数?键和值必须以 1:1 的比例匹配。值是与其对应键相关联的搜索值。

我已经对当前设置进行了很好的验证,它可以正常工作,但我正在重新考虑并希望将键和值一起传递以避免太多不可预见的输入验证问题。

解决方法

您可以使用字典:

Dictionary<string,string> dict = new Dictionary<string,string>();
dict.Add("key1","value1");
dict.Add("key2","value2");

dict["key1"] // this will get you "value1"

这样每个键只对应一个值。

像这样传递给函数

Response GetUser(
    Dictionary<string,string> dict,List<string> fieldsToReturn= null
    );
,

我会使用值元组语法

GetUser(IEnumerable<(string Key,string Value)> keyValues)

这保证了键值之间的匹配。我认为它也能更好地传达出它不像字典那样用于查找。