我有ArrayList
个对象。其中一些对象属于这一类:
public class NewCompactSimilar
{
public List<int> offsets;
public List<String> words;
public int pageID;
public NewCompactSimilar()
{
offsets = new List<int>();
words = new List<string>();
}
}
但是列表也可以包含其他类的对象。
我需要检查我的ArrayList
是否包含与我的对象相同的对象。
那么,我该怎么做?
答案 0 :(得分:1)
if (words.Contains(myObject))
ArrayList有一个名为Contains的方法,它检查Object是否具有与您拥有的Reference相同的Reference。如果要检查值是否相同,但是不同的参考,则必须使用代码:
private bool GetEqual(String myString)
{
foreach (String word in words)
{
if (word.Equals(myString))
return true;
}
return false;
}
我希望是这样的:)
答案 1 :(得分:1)
列表是您的ArrayList
,而项目是您要搜索的NewCompactSimilar
:
list.OfType<NewCompactSimilar>().
FirstOrDefault(o => o.offsets == item.offsets &&
o.words == item.words &&
o.pageID == item.pageID);
要运行深度相等比较,请实现以下方法:
public bool DeepEquals(NewCompactSimilar other)
{
return offsets.SequenceEqual(other.offsets) &&
words.SequenceEqual(other.words) &&
pageID == other.pageID;
}
然后使用以下LINQ链:
list.OfType<NewCompactSimilar>().
FirstOrDefault(o => o.DeepEquals(item));