C# 如何使用linq返回筛选列表?

C# 如何使用linq返回筛选列表?,c#,linq,C#,Linq,我不确定我的标题是否正确,但linq应该请合适的专家来帮助我确定标题并回答问题 如果我有一个人员列表,我如何返回一个人员包装器列表减去“Dave”和“Jane” 当前的查询如下所示: List<Person> People = CreatListofPersons(); People.Select(t => new PeopleWrapper(t)).ToArray(); List People=createListofPersons(); 选择(t=>newpeoplewr

我不确定我的标题是否正确,但linq应该请合适的专家来帮助我确定标题并回答问题

如果我有一个人员列表,我如何返回一个人员包装器列表减去“Dave”和“Jane”

当前的查询如下所示:

List<Person> People = CreatListofPersons();
People.Select(t => new PeopleWrapper(t)).ToArray();
List People=createListofPersons();
选择(t=>newpeoplewrapper(t)).ToArray();
LINQ有一个扩展方法列表,允许您筛选或投影(您已经使用
Select()
)进行了筛选或投影)。在您的示例中,您可以使用来指定要让哪些元素通过,在您的示例中,可以指定名称既不是Dave也不是Jane的所有人

“哪里”在前面重要吗 “选择”还是之后

您通常希望尽快进行筛选,否则您将不得不迭代和/或投影您无论如何都不想拥有的项

从概念上讲,是的,您可以在那里放置
where()
过滤器,稍后但是在您使用
Select()
项目后,您正在处理
PeopleWrapper
——因为
where()
扩展方法使用此数据类型作为输入条件,我认为这没有多大意义-您将过滤人员包装,而不是人员

return People.Where(p => p.Name != "Dave" && p.Name != "Jane");
LINQ有一个扩展方法列表,允许您筛选或投影(您已经使用
Select()
)进行了筛选或投影)。在您的示例中,您可以使用来指定要让哪些元素通过,在您的示例中,可以指定名称既不是Dave也不是Jane的所有人

“哪里”在前面重要吗 “选择”还是之后

您通常希望尽快进行筛选,否则您将不得不迭代和/或投影您无论如何都不想拥有的项


从概念上讲,是的,您可以在那里放置
where()
过滤器,稍后但是在您使用
Select()
项目后,您正在处理
PeopleWrapper
——因为
where()
扩展方法使用此数据类型作为输入条件,我认为这没有多大意义-您将筛选人员包装,而不是人员。

您可以使用Where仅获取与条件匹配的元素:

return People.Where(p => p.Name != "Dave" && p.Name != "Jane");
People.Where(p => p.name != "Dave" && p.name != "Jane" ).Select(t => new PeopleWrapper(t)).ToArray()

您可以使用Where仅获取与条件匹配的元素:

People.Where(p => p.name != "Dave" && p.name != "Jane" ).Select(t => new PeopleWrapper(t)).ToArray()
“Where”在“Select”之前或之后重要吗?Where在“Select”之前或之后重要吗?