gpt4 book ai didi

c# - 此代码中两个选择器函数的返回值之间的差异

转载 作者:太空狗 更新时间:2023-10-29 23:14:58 26 4
gpt4 key购买 nike

var Students = new Dictionary<string, int>();
Students.Add( "Bob" , 60);
Students.Add( "Jim" , 62);
Students.Add( "Jack", 75);
Students.Add( "John", 81);
Students.Add( "Matt", 60);
Students.Add( "Jill", 72);
Students.Add( "Eric", 83);
Students.Add( "Adam", 60);
Students.Add( "Gary", 75);

var MyVar = Students.GroupBy(r=> r.Value)
.ToDictionary(t=> t.Key, t=> t.Select(x=> x.Key));

Students对象有 NameWeight键值对。

在 ToDictionary 方法中,t变量的类型是 IEnumerable<IGrouping<K, T>> .即 IEnumerable<IGrouping<int, Students>>

为什么 Key t=>t.Key 返回的值和 t=> t.Select(**x=> x.Key**)不同的?他们都使用相同的 t多变的。 Key应该是 int 类型.

图像是在执行 GroupBy 方法后拍摄的。(这不是完整图像)Key 之一。的值为 60另一个的值为 Bob , MattAdam .

enter image description here

最佳答案

因为它不是

IEnumerable<IGrouping<int, Student>>

这是一个

IEnumerable<IGrouping<int, KeyValuePair<int, Student>>>

t => t.Key 中,您指的是分组键,而在 Select(x => x.Key) 中,您指的是键值对

您可以将鼠标悬停在 Visual Studio 中的变量上以查看类型和类型参数。

更详细:

// return an IEnumerable<IGrouping<int, KeyValuePair<int, Student>>>
Students.GroupBy(r=> r.Value)
// iterate over each IGrouping<int, KeyValuePair<int, Student>>
.ToDictionary(
group => group.Key,
// iterate over each KeyValuePair<int, Student> in the group
// because IGrouping<TKey, TElement> inherits from IEnumerable<TElement>
// so it's a Select over an IEnumerable<KeyValuePair<int, Student>>
group => group.Select(pair => pair.Key));

关于c# - 此代码中两个选择器函数的返回值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com