Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择键和返回值或选择值和返回键_C#_.net_Dictionary - Fatal编程技术网

C# 选择键和返回值或选择值和返回键

C# 选择键和返回值或选择值和返回键,c#,.net,dictionary,C#,.net,Dictionary,我想有一种非常简洁的方法可以做到这一点,但我对.NET还是新手。我有一堆对用于映射。不过,映射是双向的。我想存储一次,如下所示: {"a", "a'"}, {"b", "b'"}, ... 用字典什么的。我知道我可以使用linq轻松地查询字典,但是如果我查询一个值,如何有条件地让它返回键,或者如果我输入一个键,如何有条件地让它返回值?例如,如果输入b',输出b。如果输入a,则输出a’ 顺便说一下,数据结构不必是字典。我只想用最简洁的方式存储它,用最简洁的方式检索它。这不是性能密集型方法。创建字

我想有一种非常简洁的方法可以做到这一点,但我对.NET还是新手。我有一堆对用于映射。不过,映射是双向的。我想存储一次,如下所示:

{"a", "a'"},
{"b", "b'"},
...
用字典什么的。我知道我可以使用linq轻松地查询字典,但是如果我查询一个值,如何有条件地让它返回键,或者如果我输入一个键,如何有条件地让它返回值?例如,如果输入b',输出b。如果输入a,则输出a’


顺便说一下,数据结构不必是字典。我只想用最简洁的方式存储它,用最简洁的方式检索它。这不是性能密集型方法。

创建字典扩展方法

public static string Retrieve(this Dictionary<string,string> dictionary, string value)
    {
        var item = (from v in dictionary
                    where v.Key == value || v.Value == value
                    select (v.Key == value) ? v.Value : v.Key
                    ).FirstOrDefault();

        return item;
    }

创建字典扩展方法

public static string Retrieve(this Dictionary<string,string> dictionary, string value)
    {
        var item = (from v in dictionary
                    where v.Key == value || v.Value == value
                    select (v.Key == value) ? v.Value : v.Key
                    ).FirstOrDefault();

        return item;
    }

最简洁的方法是使用字典并将所有内容放入其中,例如:

{ "a", "a'" }
{ "a'", "a" }
{ "b", "b'" }
{ "b'", "b" }

查找和使用将是快速而清晰的

最简洁的方法是使用字典并将所有内容放入其中,例如:

{ "a", "a'" }
{ "a'", "a" }
{ "b", "b'" }
{ "b'", "b" }

查找和使用将快速而清晰

问题是我不知道它是否匹配键或值。我必须知道它与哪个匹配,这样我才能返回相应的值。问题是我不知道它是与键匹配还是与值匹配。我必须知道哪个匹配,这样我才能返回相应的值。我完全同意,这将是我的一般方法,但是我希望c已经有了这个功能。@tau你可以为Dictionary创建一个包装类来实现这个功能。如果你事先知道你大部分时间都使用键进行查找,但偶尔需要按值进行查找,你可以使用类似dict.Wherex=>x==value.FirstOrDefault的东西,但是如果你通常需要搜索值,它可能会非常慢。我完全同意,这将是我的一般方法,但是我希望c已经有了这个功能。@tau你可以为Dictionary创建一个包装类来实现这个功能。如果你事先知道你大部分时间都使用键进行查找,但偶尔需要按值进行查找,你可以使用类似dict.Wherex=>x==value.FirstOrDefault的东西,但是,如果您通常必须搜索这些值,它可能会非常慢。