gpt4 book ai didi

c# - 使用 lambda 表达式的两个列表与索引的交集

转载 作者:行者123 更新时间:2023-11-30 21:46:22 29 4
gpt4 key购买 nike

我正在尝试制作一个包含两个序列的索引和匹配元素的字典。例如:-

List<string> A = new List<string> { "a", "b", "c", "d", "e", "f", "g" };
List<string> B = new List<string> { "a", "d", "e", "f" };

现在我想构建一个看起来像这样的字典。

// Expected Output:-
// { "a" , 0 }
// { "d" , 3 }
// { "e" , 4 }
// { "f" , 5 }

其中字典中的第一个条目是两个列表中的公共(public)元素,第二个条目是第一个列表 (A) 中的索引。不确定如何使用 Lambda 表达式来做到这一点。

最佳答案

这样做,对于 B 中的每个元素,使用 A 集合中的 IndexOf。然后使用ToDictionary将其转换成你想要的字典形式

List<string> A = new List<string> { "a", "b", "c", "d", "e", "f", "g" };
List<string> B = new List<string> { "a", "d", "e", "f" };

var result = B.Select(item => new { item, Position = A.IndexOf(item) })
.ToDictionary(key => key.item, value => value.Position);

请记住,B 中的项目必须是唯一的,这样它才不会在 KeyAlreadyExists 上失败。在那种情况下:

 var result = B.Distinct()
.Select(item => new { item, Position = A.IndexOf(item) })
.ToDictionary(key => key.item, value => value.Position);

如果您不想要未找到的项目的结果:

 var result = B.Distinct()
.Select(item => new { item, Position = A.IndexOf(item) })
.Where(item => item.Position != -1
.ToDictionary(key => key.item, value => value.Position);

关于c# - 使用 lambda 表达式的两个列表与索引的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39265066/

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