gpt4 book ai didi

c# - 如何将两个不同类型的列表合并为一个包含两种类型的新类型列表?

转载 作者:行者123 更新时间:2023-11-30 14:57:36 24 4
gpt4 key购买 nike

我想合并/合并/加入/无论什么枚举列表,这样统一列表中的每个项目都会有两个字段——枚举的名称> 项目(string Name)及其值(TokensEnum Token):

var tokens = Enum.GetValues(typeof (TokensEnum));
var names = Enum.GetNames(typeof (TokensEnum));

var combined = InTheDarknessBindThem(tokens,names);

foreach(var c in combined)
MessageBox.Show(string.Format(
"Token \"{0}\" value is {1}", c.Name, (int)c.Token));

如何编写以下方法的主体(最好是 LINQ-wise)?

InTheDarknessBindThem(IEnumerable<TokensEnum> tokens, IEnumerable<string> names) {
/*
...
*/
}

最佳答案

如果两个列表都按顺序排列,您可以使用 Zip 扩展方法:

tokens.Cast<TokensEnum>().Zip(names, (t, n) => Tuple.Create(t, n));

这将返回 IEnumerable<Tuple<TokensEnum, string>> .

但是作为Jon Skeet suggests ,在这种情况下,做这样的事情可能会更容易:

Enum.GetValues(typeof(TokensEnum))
.Cast<TokensEnum>()
.Select(t => Tuple.Create(t, t.ToString()));

这将返回与上面相同的结果,但它将在一个步骤中完成。

既然你在评论中提到你想要一个 Dictionary<string, TokensEnum> ,你可以使用这样的东西来构造它:

Dictionary<string, TokensEnum> myDictionary = 
Enum.GetValues(typeof(TokensEnum))
.Cast<TokensEnum>()
.ToDictionary(t => t.ToString());

关于c# - 如何将两个不同类型的列表合并为一个包含两种类型的新类型列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616527/

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