嗨,我是linq的新手,请原谅我的坏关键词。
IList<Log> pendingLogs = rep.GetAllPending();
IList<Short> pendingMessageInQueue = PendingCommandModel.GetPendingMessagesIds();
我有两个清单。
我想从pendingLogs
中删除pendingMessageInQueue
中item.Id所在的项目。
如果在这种情况下更合适,我也可以使用IEnumerable
。
答案 0 :(得分:1)
如果您想保留原始列表instead of creating a new one,可以使用简单的联接来获取要删除的项目:
foreach(var log in pendingMessageInQueue.Join(pendingLogs,
(id) => id,
(log) => log.Id,
(id, log) => log))
{
pendingLogs.Remove(log);
}
答案 1 :(得分:0)
创建一个包含您要保留的所有项目的新列表,您可以使用!Contains
:
pendingLogs = pendingLogs
.Where(pl => !pendingMessageInQueue.Contains(pl.id))
.ToList();