研究一种在应用程序中使用现有搜索引擎的新方法。这个想法是使用前缀进行搜索,而不是在搜索之前检查复选框中的首选值。像这样:“#12345678”,而搜索引擎将返回电话号码的结果。

问题在于此搜索包含三个值。我有两个枚举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;

关于c# - 需要帮助为三个值实现某种列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8239439/

10-09 06:43