2

我正在开发具有 . net 2.0作为框架。我有一个类的列表,我想在将它添加到列表之前检查对象是否已经存在。我知道我可以使用.Anylinq 来做到这一点,但它在我的情况下不起作用。我不能使用.contains,因为该对象将不一样,因为它有很多属性,所以我留下了一个独特的属性来检查它是否已经添加,但它不起作用代码:

bool alreadyExists = exceptionsList.Exists(item =>
       item.UserDetail == ObjException.UserDetail    
    && item.ExceptionType != ObjException.ExceptionType) ;

我的课

public class AddException
    {
        public string  UserDetail{ get; set; }
        public string  Reason { get; set; }
        public Enumerations.ExceptionType ExceptionType { get; set; }

    }
    public class Enumerations
    {
        public enum ExceptionType
        {
            Members = 1,
            Senders =2
        }
    }

初始情况

AddException objException = new AddException
                {
                    Reason = "test",
                    UserDetail = "Ankur",
                    ExceptionType = 1
                };

此对象已添加到列表中。

第二次

AddException objException = new AddException
                {
                    Reason = "test 1234",
                    UserDetail = "Ankur",
                    ExceptionType = 1
                };

这不应该被添加到列表中,但是.Exist检查失败并且它被添加到列表中。

有什么建议么。

4

3 回答 3

3

Exists已经返回bool而不是对象,因此最后的空检查不起作用。

bool alreadyExists = exceptionsList.Exists(item =>
        item.UserDetail == ObjException.UserDetail
     && item.ExceptionType == ObjException.ExceptionType
);

重要的是,你必须改变

item.ExceptionType != ObjException.ExceptionType

item.ExceptionType == ObjException.ExceptionType

UserDetail因为您想知道是否有与 和相等的项目ExceptionType

另请注意,您不应Enums使用它们的 int 值进行初始化。所以改变

AddException objException = new AddException
{
    Reason = "test 1234",
    UserDetail = "Ankur",
    ExceptionType = 1
};

AddException objException = new AddException
{
    Reason = "test 1234",
    UserDetail = "Ankur",
    ExceptionType = Enumerations.ExceptionType.Members
};

(顺便说一句,那甚至不应该编译)

于 2012-10-10T10:58:48.127 回答
0

您可以使用 .Contains 方法,但您需要为您的对象实现 Equal 方法。

检查此链接:

http://msdn.microsoft.com/en-us/library/bhkz42b3.aspx

于 2012-10-10T10:58:10.430 回答
0

试试这个

bool alreadyExists = exceptionsList.Exists(item => item.UserDetail == ObjException.UserDetail && item.ExceptionType != ObjException.ExceptionType);

存在返回 bool

于 2012-10-10T11:00:28.983 回答