C# 如何使用复合键从字典中获取值?
我的程序有一个单元格网格,我希望能够有效地按行或列编号进行查询。我应该使用什么样的结构来执行此操作 例如,我希望有以下方法:C# 如何使用复合键从字典中获取值?,c#,.net,dictionary,C#,.net,Dictionary,我的程序有一个单元格网格,我希望能够有效地按行或列编号进行查询。我应该使用什么样的结构来执行此操作 例如,我希望有以下方法: CellsCollection.GetCell(Int32 row, Int32 column) CellsCollection.GetAllCellsInRow(Int32 row) CellsCollection.GetAllCellsInColumn(Int32 column) 我的第一次尝试是创建一个包含两个字段(行和列)的结构,然后创建一个包含struct:d
CellsCollection.GetCell(Int32 row, Int32 column)
CellsCollection.GetAllCellsInRow(Int32 row)
CellsCollection.GetAllCellsInColumn(Int32 column)
我的第一次尝试是创建一个包含两个字段(行和列)的结构,然后创建一个包含struct:dictionary
复合键的字典
CellsCollection.GetCell(Int32行,Int32列)
没有问题,因为我将通过复合键查询字典
另外两个(获取行/列中的单元格)会出现问题,因为如果我这样做:
dictionary.Where(keyPair=>keyPair.Key.Row == row).Select(keyPair=>keyPair.Values.Cell)
然后,dictionary键变得没有意义,程序必须遍历dictionary中的每个键
我想到了一个嵌套字典(外部字典带有行键,内部字典带有列键),但我认为只有在按行而不是按列查询时,这才有帮助
你如何克服这个问题呢?如果你的索引中有空白,那么字典就是最好的选择。如果你有一个网格的细胞,那么我猜那不是事实(除非你有很多空细胞) 那么,为什么不使用二维数组呢?e、 g
int[,] cells = new int[maxRow,maxColumn];
这样,如果您想查询特定的单元格,只需执行以下操作
int cellValue = cells[row,column]
或
如果要将所有内容都排成一行:
for(int col = 0; col < maxColumn; col++)
int cellValue = cells[row, col];
for(int col=0;col
或
public IEnumerable GetAllCellsRow(Int32行)
{
for(int col=0;col
对于列中的所有内容,都是类似的
for(int row = 0; row < maxRow; row++)
int cellValue = cells[row, column];
for(int row=0;row
或
public IEnumerable GetAllCellsInColumn(Int32列)
{
对于(int row=0;row
如果你的索引中有空白,那么字典就是最好的选择。如果你有一个网格的细胞,那么我猜那不是事实(除非你有很多空细胞)
那么,为什么不使用二维数组呢?e、 g
int[,] cells = new int[maxRow,maxColumn];
这样,如果您想查询特定的单元格,只需执行以下操作
int cellValue = cells[row,column]
或
如果要将所有内容都排成一行:
for(int col = 0; col < maxColumn; col++)
int cellValue = cells[row, col];
for(int col=0;col
或
public IEnumerable GetAllCellsRow(Int32行)
{
for(int col=0;col
对于列中的所有内容,都是类似的
for(int row = 0; row < maxRow; row++)
int cellValue = cells[row, column];
for(int row=0;row
或
public IEnumerable GetAllCellsInColumn(Int32列)
{
对于(int row=0;row
这太疯狂了,可能会有用!现在,当需要更多的行/列时,如何处理调整数组大小的需要?(为了以防万一,我不能只分配最大数量的行和列)。我用字典和数组进行了测试,数组速度更快,占用的内存更少。这太疯狂了,它可能会工作!现在,当需要更多的行/列时,如何处理调整数组大小的需要?(为了以防万一,我不能只分配最大数量的行和列)。我用字典和数组进行了测试,数组速度更快,占用的内存更少。