如何从 IEnumerable 获取键值对集

本文关键字:键值对 获取 IEnumerable | 更新日期: 2023-09-27 18:33:42

我有一个名为 Student 的类:它具有称为_ClassValues的属性。它基本上是一个字符串键值对的 IE无数,其值如下:

Student._ClassValues[0, 0] = "Class1"
Student._ClassValues[0, 1] = "Class2"
Student._ClassValues[0, 2] = "Class2"
Student._ClassValues[0, 3] = "Class1"
... So on.. 
Student._ClassValues[1, 1] = "Exam1"
Student._ClassValues[1, 2] = "Exam2"
Student._ClassValues[1, 3] = "Exam1"
... So on.. 

有没有更简单的方法可以获取包含字符串"Class1"的所有_ClassValues?

我创建了很多方法来获取这些值,但我知道必须有更好的方法来做到这一点,不是吗?

如何从 IEnumerable 获取键值对集

这应该可以做到:

List<KeyValuePair<int, int>> FindString(string[,] values, string search)
{
    var result = new List<KeyValuePair<int, int>>();
    for (int i = 0; i < values.GetLength(0); i++)
    {
        for (int j = 0; j < values.GetLength(1); j++)
        {
            if (values[i, j] == search)
            {
                result.Add(new KeyValuePair<int, int>(i, j));
            }
        }
    }
    return result;
}

这样称呼它:

var positions = FindString(Student._ClassValues, "Class1");

您可以使用简单的 foreach 循环遍历二维数组中的所有值:

foreach (string value in Student._ClassValues)
{
    if (value == "Class1")
    { 
        // do something
    }
}