0

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

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

但是有可能制作一种IndexOfinMatrix吗?

4

4 回答 4

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);
}
于 2012-12-06T12:37:47.817 回答
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){...}

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

于 2012-12-06T12:37:41.280 回答
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;
        }
于 2012-12-06T12:36:26.400 回答
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索引在哪里。

于 2012-12-06T12:40:11.350 回答