需要帮助实现三种值的某种列表
问题描述:
在应用程序中使用已有的搜索引擎的新方法。这个想法是使用前缀进行搜索,而不是在搜索前检查复选框中的首选值。就像这样:“#12345678”,而searchengine会返回一个电话号码的结果。需要帮助实现三种值的某种列表
问题是此搜索包含三个值。我有两个枚举SearchCriteria和SearchType。第三个值是作为字符串值的实际前缀。
解决此问题的最有效方法是什么?一直在寻找KeyValuePairs,但这似乎最终有点混乱。
我试过在字典中持有不同的可能性。
prefixes = new Dictionary<string, KeyValuePair<SearchCriteria, SearchType>> {
{ values },
{ values }
}
请问? :)
答
出了什么问题只是写一个简单的值类型来保存这些信息?
public struct Search
{
public Search(SearchCriteria criteria, SearchType type, string prefix) { ... }
public readonly SearchCriteria Criteria;
public readonly SearchType Type;
public readonly String Prefix;
}
把你的各种搜索类型分为您可以使用LINQ来获取类型&标准的特定前缀列表...
Search[] searches = new []
{
new Search(SearchCriteria.PhoneNumber, SearchType.Match, "#"),
new Search(SearchCriteria.PostCode, SearchType.CaseInsensetive, "*")
}
string prefix = "#";
var searchCriteria = searches.Single(x => x.Prefix = prefix).Criteria;
var searchType = searches.Single(x => x.Prefix = prefix).Type;
+0
+1 readonlyvalueype – sehe
答
只需使用一个结构
struct ValueParts
{
public readonly SearchCriteria criteria;
public readonly SearchType type;
public readonly string prefix;
public ValueParts(SearchCriteria c, SearchType t, string p)
{
criteria = c;
type = t;
prefix = p;
}
}
或C#4.0元组:
Tuple<SearchCriteria, SearchType, string> tuple(
SearchCriteria.Normal, /*just making that up*/
SearchType.And, /* that too*/
"#12345678");
双方将是 '最有效'
你在你的例子在谈论所谓的multimap或multihash - http://en.wikipedia.org/wiki/Multimap – MattDavey