使用.Where子句和条件来过滤数组

los*_*193 0 c# filter where

我有2个IEnumerable列表,有一个方法调用GetId(),返回一个integer.

IEnumerable oldBoats
IEnumerable updatedBoats
Run Code Online (Sandbox Code Playgroud)

我想比较两个列表.如果updatedBoats.getId()返回唯一ID oldBoats,我想将其添加到列表中.

所以我这样做了:

IEnumerable<Boat> newBoats = updatedBoats
    .Where(c => oldBoats
    .Any(d => d.GetId() != c.GetId())
    .ToList()
Run Code Online (Sandbox Code Playgroud)

目前标识的oldBoatsnewBoats[1, 2, 3, 4, 5].我想测试基本情况,但这并没有通过.将newBoats始终返回所有的,当它应该返回ID的列表none.我在做订单cd错吗?

zer*_*oef 6

这个怎么样?

var newBoats = updatedBoats.Where(u => !oldBoats.Any(o => o.GetId() == u.GetId()));
Run Code Online (Sandbox Code Playgroud)