如何检查对象的ArrayList是否包含我的对象?

时间:2012-12-16 22:30:34

标签: c# .net arraylist contains

我有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是否包含与我的对象相同的对象。

那么,我该怎么做?

2 个答案:

答案 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));