相关疑难解决方法(0)

Dictionary和Hashtable之间的区别

可能重复:
为什么Dictionary优先于C#中的哈希表?

Dictionary和Hashtable有什么区别.如何决定使用哪一个?

c# collections

106
推荐指数
6
解决办法
17万
查看次数

C#从List <KeyValuePair <string,string>中获取键和值

给出一个清单:

    private List<KeyValuePair<string, string>> KV_List = new List<KeyValuePair<string, string>>();
    void initList()
    {
        KV_List.Add(new KeyValuePair<string, string>("qwer", "asdf"));
        KV_List.Add(new KeyValuePair<string, string>("qwer", "ghjk"));
        KV_List.Add(new KeyValuePair<string, string>("zxcv", "asdf"));
        KV_List.Add(new KeyValuePair<string, string>("hjkl", "uiop"));
    }
Run Code Online (Sandbox Code Playgroud)

(注意:"qwer"键有多个值,值"asdf"有多个键.)

1)有没有更好的方法来返回所有键的列表,而不仅仅是在KeyValuePair列表上执行foreach?

2)同样,有没有比使用foreach更好的方法返回给定键的所有值列表?

3)然后,如何返回给定值的键列表?

谢谢...

c# list keyvaluepair

13
推荐指数
3
解决办法
7万
查看次数

如何在.NET中使用Hashtables/HashSet?

我有一个约9000个产品的列表,其中一些可能有重复.

我想用产品序列号作为密钥来制作这些产品的HashTable,这样我就可以轻松找到重复的产品.

如何在C#/ .NET中使用HashTable?HashSet会更合适吗?

最终我想要一个像这样的列表:

Key-Serial:11110 - 包含:Product1
Key-Serial:11111 - 包含:Product3,Product6,Product7
Key-Serial:11112 - 包含:Product4
Key-Serial:11113 - 包含:Product8,产品9

所以,我有一个所有产品的列表,它们按照具有重复序列号的产品进行分组.这样做的"正确"方法是什么?

.net c# hashtable hashset data-structures

11
推荐指数
4
解决办法
2万
查看次数

是否存在具有键/值对的通用集合,其中键可以多次出现?

我想使用类似的泛型集合Dictionary,但Dictionary要求每个键都是唯一的.我有相同"密钥"的多个值,所以我需要一个允许的通用集合.

我意识到这使得钥匙不再是钥匙,但我不知道还有什么可以称之为钥匙.

.net dictionary generic-collections

8
推荐指数
2
解决办法
5218
查看次数

是否有C#数据结构将键映射到多个值?

是否有C#数据结构将键映射到多个值?我有一个项目集合,我想按名称键入; 但是,名称并不是唯一的.Hashtable和Dictionary只允许使用唯一键.查找似乎接近我想要的; 但是,它不是可变的.

是否存在我缺少的内置数据结构,或者我是否需要自己构建一个?

c#

7
推荐指数
1
解决办法
7268
查看次数

将项添加到Dictionary <int,List <int >>

所以我循环遍历一些对象并初始化Dictionary>对象.

首先,我检查密钥是否存在,如果存在,我将添加到列表中

如果没有,我将创建一个新密钥和新列表

这是正确的逻辑吗?
我将不得不这样做:

new List<int>();
Run Code Online (Sandbox Code Playgroud)

我第一次插入项目了吗?

即:

if(myDic.ContainsKey(car.ID))
{
      myDic[car.ID].Add(car.MfgID);
}
else
{
   myDic.Add(car.ID, new List<int>);
   myDic[car.ID].Add(car.MfgID);
}
Run Code Online (Sandbox Code Playgroud)

c# collections dictionary

6
推荐指数
1
解决办法
2万
查看次数

是否可以创建一个返回两种可能类型之一的方法?

我有2个数据结构:Dictionary<string, string>Multimap<string, string>.Multimap实际上只是一个字典.我从这个问题中得到了必须的代码.这是类定义:

public class Multimap<TKey, TValue> : Dictionary<TKey, HashSet<TValue>>
{ ... }
Run Code Online (Sandbox Code Playgroud)

两种数据结构都有一种.Add(TKey key, TValue value)方法.

我有一个类负责从某些文件填充这些映射.我目前有以下两种方法:

    public Dictionary<string, string> PopulateDictionary(...)
    {
        Dictionary<string, string> returnDictionary = new Dictionary<string, string>();
        ...
        foreach (...)
        {
            ...
            returnDictionary.Add(key, value);
        }
        return returnDictionary;
    }

    public Multimap<string, string> PopulateMultimap(...)
    {
        Multimap<string, string> returnMultimap = new Multimap<string, string>();
        ...
        foreach (...)
        {
            ...
            returnMultimap.Add(key, value);
        }
        return returnMultimap;
    }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它们完全相同,都长约25行,唯一的区别是它们的返回类型.我想要做的是将其浓缩为一种方法.我的第一次尝试是采用这种方法

public Dictionary<string, object> PopulateGenericDictionary(...)
{ ... } …
Run Code Online (Sandbox Code Playgroud)

c# generics dictionary casting

4
推荐指数
1
解决办法
179
查看次数

C#中地图的等价物是什么?

在C++我正在使用map<string, map<string, string>> Any_name;.在C#中,这相当于什么?

c# c++

2
推荐指数
1
解决办法
1822
查看次数

优雅的方式做词典<Key,Collection <Value >>

将关键对象的映射存储到值对象集合的最佳方法是什么?
我可以用

Dictionary<KeyType, Collection<ValueType>>
Run Code Online (Sandbox Code Playgroud)

但这种方法往往涉及大量的内务管理,并使代码混乱.

Lookup类型几乎是我正在寻找的结果,但它是不可变的,没有构造函数.我可以创建自己的自定义类,但它似乎应该存在于某个框架中.

c# types

1
推荐指数
1
解决办法
519
查看次数