首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LINQ:选择对象不包含列表中项目的位置

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

Stack Overflow用户
提问于 2011-04-13 03:04:04
回答 4查看 201.9K关注 0票数 79

我正在为LINQ语法here...thought而苦苦挣扎,我想在这里抛出它。我在别的地方找不到我想要的东西。

好的,假设我得到了这个:

代码语言:javascript
运行
复制
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根据另一个列表中的对象过滤出我的对象列表。我希望这是有意义的。我想我只是迷失在包含部分……我不知道该怎么写。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-13 03:09:22

通常,您要查找的是"Except“扩展。

代码语言:javascript
运行
复制
var rejectStatus = GenerateRejectStatuses();
var fullList = GenerateFullList();
var rejectList = fullList.Where(i => rejectStatus.Contains(i.Status));
var filteredList = fullList.Except(rejectList);

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

票数 131
EN

Stack Overflow用户

发布于 2011-04-13 03:09:31

将其转储到一个更具体的集合,其中只包含您不需要的ids

代码语言:javascript
运行
复制
var notTheseBarIds = filterBars.Select(fb => fb.BarId);

然后试试这个:

代码语言:javascript
运行
复制
fooSelect = (from f in fooBunch
             where !notTheseBarIds.Contains(f.BarId)
             select f).ToList();

或者这样:

代码语言:javascript
运行
复制
fooSelect = fooBunch.Where(f => !notTheseBarIds.Contains(f.BarId)).ToList();
票数 87
EN

Stack Overflow用户

发布于 2011-04-13 03:10:12

我没有尝试过这个,所以我不能保证任何东西。

代码语言:javascript
运行
复制
foreach Bar f in filterBars
{
     search(f)
}
Foo search(Bar b)
{
    fooSelect = (from f in fooBunch
                 where !(from b in f.BarList select b.BarId).Contains(b.ID)
                 select f).ToList();

    return fooSelect;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5640259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档