从IList <log>中删除项目,其中log.id存在于IList <short> </short> </log>中

时间:2014-05-22 07:17:24

标签: c# linq

嗨,我是linq的新手,请原谅我的坏关键词。

 IList<Log> pendingLogs = rep.GetAllPending();
 IList<Short> pendingMessageInQueue = PendingCommandModel.GetPendingMessagesIds();

我有两个清单。 我想从pendingLogs中删除pendingMessageInQueue中item.Id所在的项目。 如果在这种情况下更合适,我也可以使用IEnumerable

2 个答案:

答案 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();