Дополнительный метод для удаления объектов из списка, которые существуют в другом

Я пытаюсь отфильтровать список на основе предиката Func. Я использую Func, чтобы отфильтровать полный список и возвратить результат операции. Я затем должен определить, который MachineActions появляются в полном списке, но не фильтрованном списке.

static void Main(string[] args)
{
    var allActions = new List<MachineAction>
                     {
                         new MachineAction
                             { Name = "A", Status = MachineActionStatus.Cancelled },
                         new MachineAction
                             { Name = "B", Status = MachineActionStatus.Error },
                         new MachineAction
                             { Name = "C", Status = MachineActionStatus.Waiting }
                         };

     var filteredActions = allActions.Where(FilterNotCompleted);
}

private readonly static Func<MachineAction, bool> FilterNotCompleted = action =>
                                         (action.Status == MachineActionStatus.Waiting ||
                                          action.Status == MachineActionStatus.Started);

public class MachineAction
{
    public MachineActionStatus Status { get; internal set; }
    public string Name { get; internal set; }
}

internal enum MachineActionStatus
{
    Waiting,
    Started,
    Success,
    Error,
    Cancelled
} ;

Существует ли дополнительный метод, который сравнит полный список с фильтрованным списком и возвратит тех, которые не в обоих?

Спасибо

1
задан fletcher 20 July 2010 в 08:47
поделиться

3 ответа

Обратите внимание на расширение кроме

2
ответ дан 2 September 2019 в 22:55
поделиться
allActions.Where(item => !filteredActions.Contains(item))

но, может быть, лучше было бы сделать

var filteredActions = allActions.Where(item => !FilterNotCompleted(item));

(обратите внимание на команду! Bevore the func.)

0
ответ дан 2 September 2019 в 22:55
поделиться
allActions.Except(filteredActions )
0
ответ дан 2 September 2019 в 22:55
поделиться