Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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# - Fatal编程技术网

C# 列表和字典的问题

C# 列表和字典的问题,c#,C#,我对键和值的列表字典有问题 我的字典是这样设置的 Dictionary<List<string>,List<double>> f = new Dictionary<List<string>,List<double>>(); 这是因为一个非常特殊的原因 我的问题是如何将这两个列表放到它们自己的列表中。我试过以下方法 List<string> s = new List<string>(f.Keys);

我对键和值的列表字典有问题

我的字典是这样设置的

Dictionary<List<string>,List<double>> f = new Dictionary<List<string>,List<double>>();
这是因为一个非常特殊的原因

我的问题是如何将这两个列表放到它们自己的列表中。我试过以下方法

List<string> s = new List<string>(f.Keys);
List<string> s = f.Select(kvp=>kvp.Keys).ToList()
List<string> s = f.Select(kvp=>kvp.Keys);
List<string> s = f.Keys;
以及使用IEnumerable的变体。无论我做什么,我似乎无法检索键或使用f值,值


这里的任何帮助都将不胜感激。

哈哈,这可能是我最近看到的最有趣的事情了

好的。在c语言中有一种称为KeyValuePair的结构。然后,您可以使用foreach遍历整个数据集,并获得所需的访问权限

foreach(KeyValuePair<<List<string>,List<double>> item in f) {
    List<string> key = item.key;
    List<double> value = item.value;
}

哈哈,这可能是我最近看到的最有趣的事情了

好的。在c语言中有一种称为KeyValuePair的结构。然后,您可以使用foreach遍历整个数据集,并获得所需的访问权限

foreach(KeyValuePair<<List<string>,List<double>> item in f) {
    List<string> key = item.key;
    List<double> value = item.value;
}

字符串列表对于字典来说似乎是一个非常奇怪的键,它本身也很复杂,但您似乎相信它是正确的,所以我将重点讨论您的实际问题

由于键是键值的集合,每个键值都是一个列表,因此任何一个键值都应该起作用:

List<List<string>> s = f.Select(kvp=>kvp.Key).ToList();
List<List<string>> s = f.Keys.ToList();
如果希望将所有字符串作为一个列表基本上将所有列表连接在一起,可以使用:

List<string> s2 = f.SelectMany(kvp => kvp.Key).ToList();

SelectMany基本上是从整个字典中每个键内的集合中选择每个项。

字符串列表对于字典来说似乎是一个非常奇怪的键,并且会有其自身的复杂性,但您似乎相信它是正确的,因此我将重点讨论您的实际问题

由于键是键值的集合,每个键值都是一个列表,因此任何一个键值都应该起作用:

List<List<string>> s = f.Select(kvp=>kvp.Key).ToList();
List<List<string>> s = f.Keys.ToList();
如果希望将所有字符串作为一个列表基本上将所有列表连接在一起,可以使用:

List<string> s2 = f.SelectMany(kvp => kvp.Key).ToList();

SelectMany基本上是从整个字典中每个键内的集合中选择每个项。

如果只有一个键,则表示一个字符串列表:

List<string> newf = f.Keys.ElementAt(0);

如果只有一个键,表示一个字符串列表:

List<string> newf = f.Keys.ElementAt(0);

你为什么要这么做?最终目标是什么?哎呀。我不知道你想做什么。。。但我很确定一定有更好的方法。你确定像元组这样的东西不是更好的解决方案吗?你确定你真正想要的不是列表吗?即使这样,你也可以考虑将内部字典封装成一个更加描述性的类,比如进程设置,而不是嵌套集合。你为什么要这么做?最终目标是什么?哎呀。我不知道你想做什么。。。但我很确定一定有更好的方法。你确定像元组这样的东西不是更好的解决方案吗?你确定你真正想要的不是列表吗?即使这样,你也可以考虑将内部字典封装成一个更为描述性的类,比如进程设置,而不是嵌套集合。你应该看更多有趣的东西。这是VAR关键字的理想候选。Yea,我不是VAR最大的粉丝。我喜欢知道我的对象是什么。C++中的一种残留物。@ ZorleQ——这里是我们如何解决这个问题。当你可以看到行上的类型时,var是很好的内联-但不应该用于方法/属性返回,你必须去别的地方去找出它的类型。你应该看更多有趣的东西。这是VAR关键词的理想候选。Yea,我不是var的最大粉丝。我想知道我的对象是什么。C++中的一种残留物。@ ZorleQ——这里是我们如何解决这个问题。当你可以看到行上的类型时,var是很好的内联-但是不应该在方法/属性返回上使用,你必须去别的地方去找出它的类型。