C# 在 List<T> 中查找对象

标签 c# list find exists

我有一个列表。我想知道如何编写 LINQ 来查找它们是否存在 MyTypes 的 obj,其 id =“CLR”。

我想知道它是否存在及其索引。因此,如果它存在,那么我可以通过它的索引替换为 MyTypes 的新对象,否则添加它。

我知道我可以通过迭代列表中的项目来做到这一点,但这比使用 LINQ 语句更耗时。有错请指正。

任何人都可以提供帮助。

最佳答案

为此您真的不需要 LINQ;有方便的 List<T>.FindIndex 方法

List<Foo> foos = ...
int index = foos.FindIndex(foo => foo != null && foo.Id == "CLR");

if(index != -1)
{
     Foo replacement = ...
     foos[index] = replacement;
}
else
{
     Foo toAdd = ...
     foos.Add(toAdd);
}

顺便问一下,您确定您实际上不需要某种查找表吗?您的使用模式表明您不需要 Dictionary<string, Foo>或类似的而不是列表。

关于C# 在 List<T> 中查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10666358/

相关文章:

c# - 使用多个 Entity Framework 上下文并行化查询

c# - 如何在事件发生前加载页面?

java - Hibernate 在不删除旧元素的情况下将新元素保存在列表中

python - 如何在 Julia 中使用 zip(*list) 解包机制进行迭代?

linux - 使用 find 命令删除目录集,而不会遇到参数列表太长的情况

javascript - 从用户输入中查找 csv 文件内容的精确值

javascript - ag-grid:使用 Javascript,查找给定数据的行 ID

c# - 内存使用,SortedList vs List 问题

java - 流收集 toMap - 类型不匹配

c# - 这里发生了什么 : Process. GetCurrentProcess().MainModule.ModuleName;?