gpt4 book ai didi

c# - 使用 Linq 从集合中获取对象

转载 作者:行者123 更新时间:2023-11-30 20:57:17 27 4
gpt4 key购买 nike

我在 C# 中有一个对象,它具有一些属性:

// Pseudo class
public class
{
Id;
To;
From;
}

我在 Collection 中有很多那个类的实例。看起来像这样:

object 1:
Id: 1
To: "PathA"
From: "PathB"

object 2:
Id: 2
To: "PathB"
From: "PathC"

object 3:
Id: 3
To: "PathC"
From: "PathA"

现在我想要做的是从该集合中获取所有项目,其中 To 的值没有出现在任何对象的 From 中。这将导致以下结果:

object 1:
Id: 1
To: "PathA"
From: "PathB"

object 2:
Id: 2
To: "PathB"
From: "PathC"

因为 Id: 3 的最后一个对象在 From 属性中有 PathA,它已经存在于 To 属性。

如何使用 Linq 查询执行此操作?

最佳答案

那么,如何解决这个问题呢?首先,您可以为 To 的所有值创建一个索引。然后,根据 From 属性过滤您的序列...

类似于:

var tos = new HashSet<string>(collection.Select(item => item.To));
var filtered = collection.Where(item => !tos.Contains(item.From));

您可能想检查一下,如果创建一个 HashSet 真的像这样工作,或者您是否需要以不同的方式构造它……但您明白了。如果 tos 变得相当长,集合是有效的,因为您将经常检查它...

关于c# - 使用 Linq 从集合中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940761/

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