加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#中,有没有开箱即用的方法来构建3向查找表?

发布时间:2020-12-15 20:06:46 所属栏目:百科 来源:网络整理
导读:我有一个内存“表”,可能看起来像这样: Favorite# Name Profession--------- ---------- ------------------3 Names.Adam Profession.Baker9 Names.Bob Profession.Teacher7 Names.Carl Profession.Coder7 Names.Dave Profession.Miner5 Names.Fred Profess
我有一个内存“表”,可能看起来像这样:

Favorite#  Name        Profession
---------  ----------  ------------------
3          Names.Adam  Profession.Baker
9          Names.Bob   Profession.Teacher
7          Names.Carl  Profession.Coder
7          Names.Dave  Profession.Miner
5          Names.Fred  Profession.Teacher

我想做的是使用3个字段中的任何一个进行快速有效的查找.
换句话说,我想:

> myTable [3]和myTable [Names.Adam]和myTable [Professions.Baker]全部返回{3,Names.Adam,Profession.Baker}
> myTable [Profession.Teacher]返回{9,Names.Bob,Profession.Teacher}和{5,Names.Fred,Profession.Teacher}.

该表是在运行时根据用户的操作构建的,并且不能存储在数据库中,因为它在无法保证数据库连接的部分中使用.

现在,我“只是”(哈!)存储这个用3尤伯杯字典,每个键使用的列(FavoriteNumber,姓名,职业)中的一个,并且在尤伯杯字典持有2个字典的每个值都自身带有钥匙每个剩余的列(因此“名称”超级字典中的值的类型为Dictionary< FavoriteNumber,Profession []>和Dictionary< Profession,FavoriteNumber []>

这需要2个字典中的2个查找,以及数组的另一个遍历(通常包含1或2个元素.)

任何人都可以提出更好的方法吗?我不介意花费额外的内存,因为表可能很小(不超过20个条目)但我愿意牺牲一点CPU来使它更容易维护代码……

解决方法

然而,并不是真的使用字典,但是如果你创建这样的类的集合

class Person {
    public int FavoriteNumber;
    public string Name;
    public string Profession;
}

您可以使用LINQ搜索集合.

IList<Person> people = /* my collection */;
var selectedPeople = people.Where(p => p.FavoriteNumber = 3);
var selectedPeople2 = people.Where(p => p.Name == "Bob");
var selectedPeople3 = people.Where(p => p.Profession = "Teacher");

或者如果您更喜欢普通的LINQ语法

var selectedPeople4 = from p in people
                      where p.Name == "Bob"
                      select p;

这些selectedPeople变量中的每一个都将被输入为IEnumerable< Person>.你可以使用循环来搜索它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读