在c#中使用lambda或linq查找项目索引[关闭]
Posted
技术标签:
【中文标题】在c#中使用lambda或linq查找项目索引[关闭]【英文标题】:Find item index with lambda or linkq in c# [closed] 【发布时间】:2020-07-17 16:46:06 【问题描述】:你好,我不会说英语,如果让你感到困惑,请原谅我。
在 c# 中,我有 3 个 String 列表。
list_one:文件地址列表。
list_two:用list_one制作的MD5列表。
list_three:使用 list_two 制作的 MD5 列表,但在此列表中,我从 list_two
收集重复项问题:
如何获取 list_three 中的每个项目并在 list_two 中搜索然后返回该索引。
但我不喜欢使用 for 或 foreach,因为这会减慢我的应用程序。
如何使用 linq 或 lambda 或任何最快的方式来做到这一点。
my lists Image
【问题讨论】:
for 或 foreach 并不比 linq 慢,而且非常适合做作业 @VladL 我需要为 11000 个项目执行此操作。你知道吗? "但我不喜欢使用 for 或 foreach,因为这会减慢我的应用程序。"这种说法似乎源于对某事的严重误解。 您好,欢迎来到 ***。您是否可以edit 将您现有的代码包含为 text 而不是屏幕截图?此处要求不要为此使用图像,请参阅Discourage screenshots of code and/or errors 和Why not upload images of code on SO when asking a question 了解原因。 minimal reproducible example 显示您目前拥有的代码以及您遇到的问题将是理想的,并最大限度地提高您获得帮助的机会。 【参考方案1】:No 1 foeach
并不慢。但是要回答您想要的内容很简单,就像这样。
using System.Linq;
List<string> list = new List<string>"a","b","c","d";
List<string> list2 = new List<string>"a","c";
var result = list.Select((a, b) => new Value = a, Index = b)
.Where(x => list2.Any(d => d == x.Value))
.Select(c => c.Index).ToArray();
现在result
包含所有匹配索引。Fiddle
【讨论】:
tnx 为您解答,但它不起作用 它确实有效。检查我是否已更新 又不行了 @rezaparsian 检查! 它的工作我们忘记使用 ToList() 但答案是错误的。但我想我知道它的工作原理以上是关于在c#中使用lambda或linq查找项目索引[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
c# 在 LINQ 查询返回的列表中查找项目并将其值与列表中的另一个项目进行比较