c# - 检查范围对象是否在列表中
问题描述
我在 C# 中创建了 Range 对象列表
private List<Excel.Range> _dataCells = new List<Excel.Range>();
如果当前正在使用以下命令向列表中添加范围:
if (_dataCells.Contains(_excel.Selection) == false)
{
_dataCells.Add(_excel.Selection);
}
这最终得到一个具有重复值的列表。如何在复杂类型列表上使用 Contains 方法?
解决方案
Contains
您可以使用该All
函数并检查相关属性来确定它是否是现有项目,而不是使用该函数。
if (_dataCells.All(x => x.Selection.Property != _excel.Selection.Property))
{
_dataCells.Add(_excel.Selection);
}
解决这个问题的另一种方法是实现该Equals
功能。有关更多说明,请参见此处。
public class Selection : IEquatable<Selection>
{
...
public override bool Equals(Selection selection)
{
return selection != null && this.Property == selection.Property;
}
}
推荐阅读
- javascript - React Infinite loop useEffect 当参数具有默认数组时
- node.js - npm install 失败并出现 404 错误(/@fortawesome%2fpro-regular-svg-icons - 未找到)尽管设置了标记
- ckeditor - 使用CDN时如何将插件添加到ckeditor5
- python - 如何计算 Turtle 在屏幕上的位置
- excel - 需要 7zip 具有特定名称的文件
- wordpress - WordPress 重定向恶意软件 white.belonnanotservice
- excel - Excel VBA 不会替换 HTML 电子邮件正文中的 SharePoint 链接
- reactjs - Console.log 使用反应 - 它返回语法错误:意外的令牌,预期的“...”
- javascript - 如何通过反应处理以编程方式修改的输入中的撤消/重做?
- python - PySide2 中的 QGraphicsItem.itemClipsChildrenToShape 问题