在C#中的对象列表中使用RemoveAll#不删除项
我有一个邮件列表。我想浏览列表并执行以下操作:在C#中的对象列表中使用RemoveAll#不删除项,c#,linq,C#,Linq,我有一个邮件列表。我想浏览列表并执行以下操作: 如果SenderID=100,则将ShowInSenderInbox和ShowInSenderOutbox的值设置为零 如果ReceiverID=100,则将ShowInReceiverInbox值设置为零。 一旦满足上述两个条件,我想检查以下内容: 如果ShowInSenderInbox==0&&ShowInSenderOutbox==0&&ShowInReceiveInbox==0 然后从列表中删除此项 目前,我的代码将ShowInSender
public class Message
{
public int MessageID { get; set; }
public int SenderID { get; set; }
public int ReceiverID { get; set; }
public int ShowInSenderInbox { get; set; }
public int ShowInSenderOutbox { get; set; }
public int ShowInReceiverInbox { get; set; }
}
public bool GetItem(Message I)
{
if (I.SenderID == 100)
{
I.ShowInSenderInbox = 0;
I.ShowInSenderOutbox = 0;
}
else if (I.ReceiverID == 100)
{
I.ShowInReceiverInbox = 0;
}
if (I.ShowInSenderInbox == 0 && I.ShowInSenderOutbox == 0 && I.ShowInReceiverInbox == 0)
{
return true;
}
else
{
return false;
}
}
List<Message> messages = new List<Message>() {
new Message { MessageID=1, SenderID=100, ReceiverID=200, ShowInSenderInbox=1, ShowInSenderOutbox=1, ShowInReceiverInbox=1 },
new Message { MessageID=2, SenderID=101, ReceiverID=300, ShowInSenderInbox=1, ShowInSenderOutbox=1, ShowInReceiverInbox=1 },
new Message { MessageID=3, SenderID=102, ReceiverID=100, ShowInSenderInbox=1, ShowInSenderOutbox=0, ShowInReceiverInbox=0 },
new Message { MessageID=4, SenderID=100, ReceiverID=101, ShowInSenderInbox=0, ShowInSenderOutbox=1, ShowInReceiverInbox=0 },
new Message { MessageID=5, SenderID=200, ReceiverID=300, ShowInSenderInbox=1, ShowInSenderOutbox=0, ShowInReceiverInbox=0 },
new Message { MessageID=9, SenderID=100, ReceiverID=400, ShowInSenderInbox=1, ShowInSenderOutbox=1, ShowInReceiverInbox=1 },
new Message { MessageID=11, SenderID=400, ReceiverID=100, ShowInSenderInbox=1, ShowInSenderOutbox=1, ShowInReceiverInbox=0 },
new Message { MessageID=21, SenderID=80, ReceiverID=150, ShowInSenderInbox=1, ShowInSenderOutbox=0, ShowInReceiverInbox=1 },
new Message { MessageID=23, SenderID=100, ReceiverID=300, ShowInSenderInbox=1, ShowInSenderOutbox=1, ShowInReceiverInbox=0 },
new Message { MessageID=28, SenderID=50, ReceiverID=90, ShowInSenderInbox=1, ShowInSenderOutbox=0, ShowInReceiverInbox=1 },
new Message { MessageID=29, SenderID=100, ReceiverID=900, ShowInSenderInbox=1, ShowInSenderOutbox=1, ShowInReceiverInbox=1 },
new Message { MessageID=22, SenderID=500, ReceiverID=900, ShowInSenderInbox=0, ShowInSenderOutbox=0, ShowInReceiverInbox=0 },
new Message { MessageID=39, SenderID=409, ReceiverID=500, ShowInSenderInbox=0, ShowInSenderOutbox=0, ShowInReceiverInbox=0 },
new Message { MessageID=41, SenderID=105, ReceiverID=900, ShowInSenderInbox=0, ShowInSenderOutbox=0, ShowInReceiverInbox=0 }
};
( from item in messages
where item.SenderID == 100 || item.ReceiverID == 100
select item )
.ToList()
.RemoveAll( I => GetItem(I) );
公共类消息
{
public int MessageID{get;set;}
public int SenderID{get;set;}
public int ReceiverID{get;set;}
public int ShowInSenderInbox{get;set;}
public int ShowInSenderOutbox{get;set;}
public int ShowInReceiverInbox{get;set;}
}
公共bool GetItem(消息一)
{
如果(I.SenderID==100)
{
I.ShowInSenderInbox=0;
I.ShowInSenderOutbox=0;
}
否则,如果(I.接收方==100)
{
I.ShowInReceiverInbox=0;
}
如果(I.ShowInSenderInbox==0&&I.ShowInSenderOutbox==0&&I.ShowInReceiverInbox==0)
{
返回true;
}
其他的
{
返回false;
}
}
列表消息=新列表(){
新邮件{MessageID=1,SenderID=100,ReceiverID=200,ShowInSenderInbox=1,ShowInSenderOutbox=1,ShowInReceiverInbox=1},
新邮件{MessageID=2,SenderID=101,ReceiverID=300,ShowInSenderInbox=1,ShowInSenderOutbox=1,ShowInReceiverInbox=1},
新邮件{MessageID=3,SenderID=102,ReceiverID=100,ShowInSenderInbox=1,ShowInSenderOutbox=0,ShowInReceiverInbox=0},
新邮件{MessageID=4,SenderID=100,ReceiverID=101,ShowInSenderInbox=0,ShowInSenderOutbox=1,ShowInReceiverInbox=0},
新邮件{MessageID=5,SenderID=200,ReceiverID=300,ShowInSenderInbox=1,ShowInSenderOutbox=0,ShowInReceiverInbox=0},
新邮件{MessageID=9,SenderID=100,ReceiverID=400,ShowInSenderInbox=1,ShowInSenderOutbox=1,ShowInReceiverInbox=1},
新邮件{MessageID=11,SenderID=400,ReceiverID=100,ShowInSenderInbox=1,ShowInSenderOutbox=1,ShowInReceiverInbox=0},
新邮件{MessageID=21,SenderID=80,ReceiverID=150,ShowInSenderInbox=1,ShowInSenderOutbox=0,ShowInReceiverInbox=1},
新邮件{MessageID=23,SenderID=100,ReceiverID=300,ShowInSenderInbox=1,ShowInSenderOutbox=1,ShowInReceiverInbox=0},
新邮件{MessageID=28,SenderID=50,ReceiverID=90,ShowInSenderInbox=1,ShowInSenderOutbox=0,ShowInReceiverInbox=1},
新邮件{MessageID=29,SenderID=100,ReceiverID=900,ShowInSenderInbox=1,ShowInSenderOutbox=1,ShowInReceiverInbox=1},
新邮件{MessageID=22,SenderID=500,ReceiverID=900,ShowInSenderInbox=0,ShowInSenderOutbox=0,ShowInReceiverInbox=0},
新邮件{MessageID=39,SenderID=409,ReceiverID=500,ShowInSenderInbox=0,ShowInSenderOutbox=0,ShowInReceiverInbox=0},
新邮件{MessageID=41,SenderID=105,ReceiverID=900,ShowInSenderInbox=0,ShowInSenderOutbox=0,ShowInReceiverInbox=0}
};
(来自消息中的项目)
其中item.SenderID==100 | | item.ReceiverID==100
选择项目)
托利斯先生()
.RemoveAll(I=>GetItem(I));
只需再添加这一行:
messages.RemoveAll(i => i.ShowInSenderInbox == 0 && i.ShowInSenderOutbox == 0 && i.ShowInReceiverInbox == 0);
您不是在修改原始列表,而是(可能)在修改一个完全不同的列表。满足上述两个条件是什么意思?哪两个条件?谢谢杰夫和格兰特。谢谢@Koder101。我会的。