列表与LT;>并包含场景,比较得到排除和使用asp.net 2.0包含

时间:2010-07-10 08:58:26

标签: c#

我有两个List包含像List这样的Tag对象我需要查找被排除并包含进行更新操作如何找到它们之间的区别,因为它们包含Tag对象。你可以使用Contains函数与列表中的Tag对象需要一些帮助。

我正在使用asp.net 2.0,所以如果你能用这种语言帮助我,请。

List<Tag> tag1 = new List<Tag>()  
tag1.Add(new Tag("Apples"));  
tag1.Add(new Tag("Oranges"));  
tag1.Add(new Tag("Pears"));  

List<Tag> tag2 = new List<Tag>()  
tag2.Add(new Tag("Apples"));  
tag2.Add(new Tag("Bananas"));  

txtExcluded.Text = list1;  
txtIncluded.Text = list2  

1 个答案:

答案 0 :(得分:4)

您可以实施IEquatable<T>

public class Tag : IEquatable<Tag>
{
    public Tag(string text)
    {
        Text = text;
    }
    public string Text { get; set; }

    public bool Equals(Tag other)
    {
        return other != null && string.Equals(Text, other.Text);
    }

    public override bool Equals(object obj)
    {
        return Equals(obj as Tag);
    }

    public override int GetHashCode()
    {
        return (Text ?? string.Empty).GetHashCode();
    }
}

现在Contains方法可以像这样工作:

var list = new List<Tag>(new[]
{
    new Tag("Apples"),
    new Tag("Oranges"),
    new Tag("Pears"),
});

var tag = new Tag("Pears");
bool isContains = list.Contains(tag); // returns true