Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何填充KeyValuePair<;int,int>;在foreach循环中_C#_Logic_Keyvaluepair - Fatal编程技术网

C# 如何填充KeyValuePair<;int,int>;在foreach循环中

C# 如何填充KeyValuePair<;int,int>;在foreach循环中,c#,logic,keyvaluepair,C#,Logic,Keyvaluepair,我有下面的代码片段,它迭代分割字符串 if (!string.IsNullOrEmpty(profile.ContactNumber)) { var splitContract = profile.ContactNumber.Split(new string[] { "and", "&" }, StringSplitOptions.RemoveEmptyEntries); foreach (var contract in

我有下面的代码片段,它迭代分割字符串

if (!string.IsNullOrEmpty(profile.ContactNumber))
        {
            var splitContract = profile.ContactNumber.Split(new string[] { "and", "&" }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var contract in splitContract)
            {
                //check the split if it contains "x" or "X" character - if it does contain, it means it's a valid contract
                if (contract.Contains("x") || contract.Contains("X"))
                {
                    var condensedString = contract.Replace(" ", "");
                    var split = condensedString.Split(new char[] { 'x', 'X' });

                    GetNumbersOnly(split);
                }
            }    
        }

private void GetNumbersOnly(string[] inputArray)
    {
        var ListKeyValuePair = new List<KeyValuePair<string, string>>();

        foreach (var item in inputArray)
        {
            var numberToAdd = Regex.Replace(item, "[^0-9]", "", RegexOptions.None);

            ListKeyValuePair.Add(?, ?);
        }
    }
if(!string.IsNullOrEmpty(profile.ContactNumber))
{
var splitContract=profile.ContactNumber.Split(新字符串[]{“and”,“&”},StringSplitOptions.RemoveEmptyEntries);
foreach(拆分合同中的var合同)
{
//检查拆分是否包含“x”或“x”字符-如果它确实包含,则表示它是有效的合同
如果(合同包含(“x”)| |合同包含(“x”))
{
var condentedstring=contract.Replace(“,”);
var split=condentedstring.split(新字符[]{'x','x'});
GetNumbersOnly(拆分);
}
}    
}
私有void GetNumberOnly(字符串[]inputArray)
{
var ListKeyValuePair=新列表();
foreach(inputArray中的var项)
{
var numberToAdd=Regex.Replace(项目“[^0-9]”、“、RegexOptions.None);
ListKeyValuePair.添加(?,);
}
}
在GetNumberOnly方法中,如何在for each循环中填充KeyValuePair列表

inputArray变量的数组元素为[0]=100,第一次迭代为[1]=5,依此类推

这是KeyValuePair{100,5},{200,10},{500,15}所需的输出

抱歉,我在谷歌上搜索时,似乎找不到任何相关场景。非常感谢您的帮助。

ListKeyValuePair.Add()函数需要1个KeyValuePair类型的字段。您需要使用新的KeyValuePair(){key=item,value=numberToAdd}创建其中一个


为什么要在列表中保留键值对?为什么不买本字典呢?是否要重复对?

因为键和值存储在单独的数组项中,所以逻辑取决于顺序。在这种情况下,您应该避免为…每个使用
,而是为
使用普通的旧
,这允许您控制迭代的方式

private void GetNumbersOnly(string[] inputArray)
{
    var ListKeyValuePair = new List<KeyValuePair<string, string>>();

    for (int i=0; i< inputArray.Length; i+=2)  //The "2" here is very important!
    {
        var numberToAdd1 = Regex.Replace(inputArray[i], "[^0-9]", "", RegexOptions.None);
        var numberToAdd2 = Regex.Replace(inputArray[i+1], "[^0-9]", "", RegexOptions.None);

        ListKeyValuePair.Add(new KeyValuePair<string, string>(numberToAdd1, numberToAdd2));
    }
}
private void GetNumberOnly(字符串[]inputArray)
{
var ListKeyValuePair=新列表();
对于(inti=0;i
好建议,我不想重复。如果要使用Dictionary,如何基于代码填充Dictionary?Dictionary MyDict=new Dictionary()。。。MyDict.Add(项目,编号Add);如果(MyDict.ContainsKey(item)){//warn user}或者{//add it}MyDict.add(item,numberToAdd)中的item是什么,您可能需要检查密钥是否已经存在?抱歉,如果我的问题很愚蠢。@Juniuz:item是键值对中的键。我看到您在“foreach(inputArray中的var项)”中循环项,所以我假设您希望该项成为键。可以使用任何有意义的键。ListKeyValuePair.Add(numberToAdd1,numberToAdd2);返回一个错误。“没有重载方法'Add'需要2个参数”ListKeyValuePair是一个列表,我尝试了AddRange,但仍然存在相同的错误。哦,我现在得到它@John Wu,该行应该像ListKeyValuePair.Add(新的KeyValuePair(numberToAdd1,numberToAdd2));