带列表的矩阵<list <string =“”>&gt; INDEXOF </列表>

时间:2012-12-06 12:30:51

标签: c# list

我需要使用List<List <string >>来模拟数据矩阵和Im。 我使用IndexOf搜索列表列表中的元素。

Matrix[0].IndexOf('Search');

但有可能在IndexOf中制作一种Matrix吗?

4 个答案:

答案 0 :(得分:2)

您可以使用FindIndex方法:

int index = Matrix.FindIndex(x => x[colIndex] == "Search");

如果要通过了解要搜索的列来搜索行索引,此方法显然很有用。

如果你想在整个矩阵中搜索,你可以编写一个简单的方法:

public static Tuple<int,int> PositionOf<T>(this List<List<T>> matrix, T toSearch)
{
    for (int i = 0; i < matrix.Count; i++)
    {
        int colIndex = matrix[i].IndexOf(toSearch);
        if (colIndex >= 0 && colIndex < matrix[i].Count)
            return Tuple.Create(i, colIndex);
    }
    return Tuple.Create(-1, -1);
}

答案 1 :(得分:1)

你必须自己上课才能实现它。

public class Matrix<T>
{
    public void IndexOf<T>(T value, out int x, out int y){...}
}

或在您的类型

上使用扩展程序
public static void IndexOf<T>(this List<List<T>> list, out int x, out int y){...}

就个人而言,我会在2维数组而不是List<List<T>>上进行扩展。

答案 2 :(得分:0)

for(int i = 0; i<Matrix.Length; i++)
    for(int j = 0; j<Matrix.Length; j++)
        if(Matrix[i][j] == "Search")
        {
            //OUT i,j;
            return;
        }

答案 3 :(得分:0)

可能要求的内容如下:

示例

public void MatrixIndexOf(string content) {
      var result = matrix.Select((value, index)=> new {
        _i = index,
       _str = value
      }).Where(x=>x._str.Contains(content));
}

result之后是_i为索引的匿名类型。