如何从IEnumerable获取一组键值对

时间:2013-10-02 18:38:36

标签: c# ienumerable

我有一个名为Student的课程: 它具有名为_ClassValues的属性。它基本上是一个IEnumerable的字符串键值对,其值如:

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?

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

这应该这样做:

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");