我需要模拟一个数据矩阵,我需要使用List<List <string >>
. 我使用IndexOf
来搜索列表列表中的元素。
Matrix[0].IndexOf('Search');
但是有可能制作一种IndexOf
inMatrix
吗?
你可以使用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);
}
您必须创建自己的课程才能实现它。
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>>
.
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;
}
您可能会要求类似:
例子
public void MatrixIndexOf(string content) {
var result = matrix.Select((value, index)=> new {
_i = index,
_str = value
}).Where(x=>x._str.Contains(content));
}
在此之后result
是匿名类型,_i
索引在哪里。