gpt4 book ai didi

c# - 从具有整数属性的 List 返回 List

转载 作者:行者123 更新时间:2023-11-30 20:04:36 25 4
gpt4 key购买 nike

最终结果是我想用.Where(t => someIntList.Contains(t.ID)).ToList() .我正在努力创建 someIntList .

我目前拥有的:List<Person> people = people.Where(p => p.isActive).ToList() .如何只返回 List<int>p.ID属性(property)?

或者是否有另一种方法来执行 Contains(无需编写 Comparer 类,因为我已经将其用于其他目的。

最佳答案

好吧,生成 List<int>很简单,使用 Select 执行投影:

List<int> activeIds = people.Where(p => p.IsActive)
.Select(p => p.ID)
.ToList();

但是,与其这样做然后再使用 Contains ,我会执行一个连接:

var activePeople = people.Where(p => p.IsActive);
var query = from person in otherList
join activePeople on person.ID equals activePeople.ID
select person;

或者创建一个 HashSet<int>而不是 List<int> ,所以 Contains检查效率更高:

var activeIds = new HashSet<int>(people.Where(p => p.IsActive)
.Select(p => p.ID));
var query = otherList.Where(t => activeIds.Contains(t.ID))
.ToList();

这两者都会给查找所有匹配项带来 O(M + N) 的复杂度,而不是构建列表然后使用 that 作为 Contains 的 O(M * N)检查就可以了。

当然,这是假设 Contains检查将在过程中完成。如果这实际上将在 LINQ to SQL 查询中使用,那么它可能是传入一个 List<int>很好 - 或者 可能 连接允许您在数据库中完成所有操作。我们确实需要更多上下文来为您提供好的建议 - 但不要仅仅停留在“这就是我构建 List<T> 的方式,因此我完成了。”

关于c# - 从具有整数属性的 List<T> 返回 List<int>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717954/

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