gpt4 book ai didi

c# - LINQ:选择对象不包含列表中项目的位置

转载 作者:IT王子 更新时间:2023-10-29 03:40:54 25 4
gpt4 key购买 nike

我正在为这里的 LINQ 语法苦苦挣扎……我想我应该把它扔到这里。我在其他任何地方都找不到我要找的东西。

好的,假设我有这个:

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 部分......我不知道怎么写。

最佳答案

一般来说,您正在寻找“Except”扩展。

var rejectStatus = GenerateRejectStatuses();
var fullList = GenerateFullList();
var rejectList = fullList.Where(i => rejectStatus.Contains(i.Status));
var filteredList = fullList.Except(rejectList);

在此示例中,GenerateRegectStatuses() 应该是您希望拒绝的状态列表(或者根据您的示例更具体地说,ID 的 List<int>)

关于c# - LINQ:选择对象不包含列表中项目的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com