对不起,如果标题混乱,我不能确定我应该如何标签,我试过。交叉索引引用
我正在写一个程序做一些交叉索引搜索,该程序是使用Visual Studio 2010中
写在C#我有3列的表格:Category
,Type
和Item
。该表是从excel电子表格读入并存储在某种数据结构中的(稍后将对此进行解释)。以下是该表的简短示例。
| CATEGORY | TYPE | ITEM | <<header row
| categoryA | typeA | itemA | <<first entry
| categoryA | typeB | N/A |
| categoryA | typeC | itemB |
| categoryA | typeD | N/A |
我将读取两个用户输入字符串,并且我希望程序确定它们是否匹配。 [假设用户输入没有错字,我已经写一个函数来处理这个和正常化两个字符串]
确定两个字符串是否匹配是这样的逻辑:
1)如果字符串是一个CATEGORY
,每TYPE
和ITEM
具有相同的CATEGORY
是匹配。
2)如果字符串是TYPE
或ITEM
,在同一行中唯一的其他数据是匹配
下面是一些例子,串a和b是两个输入字符串和匹配是一个布尔值:
1) a = "categoryA", b = "typeA", match = true
2) a = "categoryA", b = "itemB", match = true
3) a = "typeC", b = "itemB", match = true
4) a = "typeC", b = "itemA", match = false
5) a = "itemA", b = "itemB", match = false
如果这不够清楚,我会给出更多的例子。
所以我的整体问题是:什么是最适合的数据结构来存储Excel电子表格中的数据,以及如何使用此数据结构进行搜索/比较匹配?
我虽然使用了Dictionary<string, string>
,所以我可以在字典中搜索字符串a并获取匹配字符串列表并进行比较,但是这样我将会有一个巨大的字典和多个相同的密钥,这是行不通的。
任何建议/帮助表示赞赏。
感谢您的建议,我想我可以看到你要去哪里。使用RowFilter方法,这是否意味着我不需要指定要搜索的列?我知道一点SQL,但对DataTable没有太多的了解。 RowFilter只是说,如果两个字符串出现在同一行,那么就有一个匹配? – sora0419
@ sora0419:对,你可以做查询动态的,所以根据当前值生成查询并获取请求的数据。它本身不是一个SQL,但它可能更类似于宏本身使用Excel本身。 – Tigran