我在这里苦苦寻找LINQ语法......我想我会在这里抛弃它。我找不到我正在寻找的其他地方。LINQ:选择对象不包含来自列表中的项目的位置
OK,说我有这样的:
public class Bar
{
public int BarId { get; set; }
}
public class Foo
{
public List<Bar> BarList { get; set; }
}
List<Foo> fooBunch = GetABunchOfFoos(); //let's just assume I'm getting more than one
List<Foo> fooSelect = new List<Foo>;
List<Bar> filterBars = GetAFewBars(); //assume I'm getting like 2 or 3
fooSelect = (from f in fooBunch
where !(from b in f.BarList select b.BarId).Contains(ITEM FROM filterBars.BarId)
select f).ToList();
所以,长话短说我想使用LINQ过滤掉我的基础上从另一个列表中的对象的对象列表。我希望这是有道理的。我想我只是迷失在Contains部分......我不知道该怎么写。
这是非常接近...窍门是从动态状态创建rejectList。这将更像是我在哪里> i.Status(列表)。我可以做那样的事吗?基本上我猜想另一个LINQ声明? –
farina
2011-04-12 19:23:40
当然,要构建rejectList,你只需要设计一个方法来获得你不想要的拒绝列表。 例如:'var rejectList = fullList.Where(i => rejectStatuses.Contains(i.Status));' 我将更新我的原始答案以反映此更改。 – Thebigcheeze 2011-04-12 19:36:32
我会如何在一行中做到这一点?我知道这可能是不可能的。 – JustJohn 2016-05-28 00:33:58