C# 双重查找集合?

C# 双重查找集合?,c#,collections,C#,Collections,我有一堆字节/字符串值 我想要一个函数/集合在另一个函数/集合的基础上查找一个函数/集合。ie:提供一个字节并返回相应的字符串。提供一个字符串,返回相应的字节 如何实现这一点?您可以创建一个简单的类来保存值对(甚至一个元组也可以): 然后,您可以将它们存储在列表中并像以下那样访问它们: var items = new List<Item> { new Item {StrVal = "first", ByteVal = 1}, new Item {StrVal = "s

我有一堆字节/字符串值

我想要一个函数/集合在另一个函数/集合的基础上查找一个函数/集合。ie:提供一个字节并返回相应的字符串。提供一个字符串,返回相应的字节


如何实现这一点?

您可以创建一个简单的类来保存值对(甚至一个元组也可以):

然后,您可以将它们存储在
列表中
并像以下那样访问它们:

var items = new List<Item>
{
    new Item {StrVal = "first", ByteVal = 1},
    new Item {StrVal = "second", ByteVal = 2},
    new Item {StrVal = "third", ByteVal = 3},
};

// Provide a byte, get the corresponding string back:
byte byteToFind = 2;
string resultStr = items.Where(i => i.ByteVal == byteToFind )
    .Select(i => i.StrVal).FirstOrDefault();

// Provide a string, get the corresponding byte back:
byte resultByte = items.Where(i => i.StrVal == resultStr)
    .Select(i => i.ByteVal).FirstOrDefault();
var items=新列表
{
新项{StrVal=“first”,ByteVal=1},
新项{StrVal=“second”,ByteVal=2},
新项{StrVal=“third”,ByteVal=3},
};
//提供一个字节,返回相应的字符串:
字节bytetofId=2;
string resultStr=items.Where(i=>i.ByteVal==bytetofId)
.Select(i=>i.StrVal).FirstOrDefault();
//提供一个字符串,返回相应的字节:
字节结果字节=项。其中(i=>i.StrVal==resultStr)
.Select(i=>i.ByteVal).FirstOrDefault();

2本字典,如果不是太大,也可以只是一个列表。O(n)这是回答更大问题的非常有用的信息-
var items = new List<Item>
{
    new Item {StrVal = "first", ByteVal = 1},
    new Item {StrVal = "second", ByteVal = 2},
    new Item {StrVal = "third", ByteVal = 3},
};

// Provide a byte, get the corresponding string back:
byte byteToFind = 2;
string resultStr = items.Where(i => i.ByteVal == byteToFind )
    .Select(i => i.StrVal).FirstOrDefault();

// Provide a string, get the corresponding byte back:
byte resultByte = items.Where(i => i.StrVal == resultStr)
    .Select(i => i.ByteVal).FirstOrDefault();