c# - C# - 查找特定值是否在列表中具有重复项
问题描述
我有一个用例,给定一个巨大的字符串列表和一个从DataGridView
包含相同顺序的相同元素的行中提取的特定字符串值,我需要查找该列表是否包含另一个相同的条目。我检查的所有现有帖子只是告诉你是否有重复的时期。这是我到目前为止所拥有的:
List<int> indexes = new List<int>{-1, originalRow.Index};
int foundIndex = CompleteScancodeList.IndexOf(originalRow.Cells[1].Value.ToString());
if (!indexes.Contains(foundIndex))
{
//Do something
}
originalRow
变量是DataGridViewRow
从遍历 a 的每一行中提取的a DataGridView
。我在这里实际上是在说:如果列表中该元素的索引不是-1,并且与行的索引不同(因此实际上是相同的元素)。
我最初设法使它与嵌套循环一起工作,但它对我来说太慢了。如果给定的字符串值存在于字符串列表中但与原始索引不同,我如何才能按照我想要的方式进行这项工作?
这可行,有点...仅当重复元素在列表中的原始元素之前时才有效。同样,如果我使用该LastIndexOf
方法,它仅在重复元素之后才有效。
解决方案
我来自电话,抱歉格式和拼写错误。因此,判断列表是否有重复项:
if (list.Count != list.Distinct().Count) { // list has dupes }
查找特定的重复项并处理它们:
var set = new HasSet<int>();
foreach (var item in list) {
if (!set.Add(item)) {
// handle it
}
}
如果您需要数组中的实际索引,您可以将 foreach 替换为 for 循环。
推荐阅读
- python - 将句子分成新行
- mysql - 新年后Mysql间隔不起作用
- reactjs - React-Router Link 变量未转换为值
- ruby - 在 Mac OS Leopard (10.5.8) 上安装 Jekyll
- prolog - 将 FOL 子句转换为 PROLOG
- ios - 构建后原生 iOS 应用程序中的 Unity 崩溃
- java - 如何通过 Builder Pattern 强制设置参数的顺序
- llvm - 哪些情况会导致 LLVM IR 中的“使用指令不是指令”?
- java - 在二维数组上移动数据
- java - 如何从 JAVAFX 的 tableview 中选择多个项目?