来自2个列表的属性上的不同项目

时间:2013-01-25 09:36:06

标签: c# linq-to-objects

我有一个Person类看起来像这样:

Person1: Id=1, Name="Test1"
Person2: Id=2, Name="Test2"
Person3: Id=3, Name="Test3"

IEnumerable<int>具有唯一的Person ID:

var personIds = new PersonRepository().GetAll().Select(x => x.Id);

我需要一个Person的列表,其中IEnumerable<int>中没有ID。

这是我多次尝试之一:

from n in personIds 
from x in Person
where x.Id != n
select x;

我只是不断收回所有内容,包括personIds中的ID。

我错过了什么?

3 个答案:

答案 0 :(得分:4)

var results = Persons.Where(p => !personIds.Contains(p.Id));

答案 1 :(得分:3)

from n in Persons 
where !Persons.Any(c=>personIds.Contains(c.Id));
select n

答案 2 :(得分:1)

确定,

应该是这样的,

var allButExclusions =
    PersonRepository.GetAll().Where(p => !exclusions.Contains(p.Id));

但是,如何推导出要排除的所有Person列表或Id列表并不明显。