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