0

我有一个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>();          
    }
}

但是列表也可以包含其他类的对象。

我需要检查 my 是否ArrayList包含与我的对象相同的对象。

那么,我该怎么做呢?

4

2 回答 2

1
if (words.Contains(myObject))

ArrayList 有一个名为 Contains 的方法,该方法检查 Object 是否具有与您所拥有的相同的 Reference。如果要检查值是否相同,但引用不同,则必须编码:

private bool GetEqual(String myString)
{
    foreach (String word in words)
    {
         if (word.Equals(myString))
            return true;
    }
    return false;
}

我希望就是这样:)

于 2012-12-16T22:36:59.103 回答
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));
于 2012-12-16T22:40:06.553 回答