【问题标题】:How to name an array based on a variable name如何根据变量名命名数组
【发布时间】:2016-05-22 07:41:59
【问题描述】:

工作是:

foreach (string feature in alpha)
            {
                for (int i=0; i < l.Count; i++)
                {
                    if (l[i] == feature)
                    {
                        string[] ("{0}",feature) = new string[];
                    }
                }
            }

string[] ("{0}",feature) = new string[]; 不正确。需要做的是,每当匹配条件(l[i] == feature) 时,创建一个新的字符串数组为:string[] (whatever string there is in feature) = new string[]

可能吗?

【问题讨论】:

  • 不可能这样,请解释你为什么要这样做?
  • 我们需要更多信息,但您可能需要Dictionary&lt;string, List&lt;string&gt;&gt;,其中的键是feature
  • @weston 因为alpha 是一个数组,对于alpha 中的每个元素,都会枚举一个文本文件,如果找到匹配项,则需要创建一个新数组并且所有子- 需要将匹配的值插入到该数组中。此操作需要对alpha 中的每个元素进行。因此需要为alpha 中的几乎每个元素创建一个新数组。我想自动化这个命名数组的过程。可能吗?
  • @KooKiz,谢谢。我假设stringDictionary&lt;string, List&lt;string&gt;&gt; 中的关键?
  • @RehanKhan 是的。然后您可以像dictionary[feature] = ... 一样访问它

标签: c# asp.net arrays


【解决方案1】:

我认为字典是你想要的。

var arrays = alpha
               .Where(a => l.Contains(a))
               .ToDictionary(a => a, a => new List<string>());

然后访问一个:

List<string> array = arrays["somefeature"];

同样停止使用数组,几乎没有充分的理由选择它们而不是其他集合类型。我使用了List,因为您说要附加到它。

【讨论】:

  • 谢谢。如何使用List创建表格形式的数据,即水平和垂直方向?
  • 嗯,字典是这样的,键是一维,值,列表,是另一维。如果这还不够好,那么您需要提出另一个问题。
  • 确实如此。非常感谢所有的指导。
【解决方案2】:

您可以使用一个排序列表,其中键值是您的功能;

        var featureList = new SortedList<string, string[]>();

        foreach (string feature in alpha)
        {
            var matchingFeatures = new List<string>();
            for (int i = 0; i < l.Length; i++)
            {
                if (l[i] == feature)
                {
                    matchingFeatures.Add(l[i]);
                }
            }
            featureList.Add(feature, matchingFeatures.ToArray());
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2019-08-03
    • 2020-03-02
    • 2023-04-08
    • 1970-01-01
    • 2015-03-15
    • 2021-06-22
    相关资源
    最近更新 更多