gpt4 book ai didi

c# - 根据字符串属性是否包含另一个 List 的任何字符串值来过滤 IEnumerable
转载 作者:行者123 更新时间:2023-11-30 15:16:33 25 4
gpt4 key购买 nike

我有一个自定义对象类型的 IEnumerable 集合,其中包含一个 JSON 格式的字符串属性。我还有一个列表集合,我需要使用它来过滤 IEnumerable。我想从 IEnumerable 中删除所有项目,其中字符串属性包含 List 集合中的任何字符串值。我可以通过创建一个临时列表并进行一些循环来解决这个问题,但我正在寻找更优雅的解决方案,但我还没有成功。

foreach (var faction in excludedFactions)
{
cardsVM.Cards = repository.Cards.ToList()
.RemoveAll(c => c.Factions.Contains(faction));
}

这是我尝试过的一件事。在过去的两个小时里,我一直在玩弄 LINQ 语句,但我无法让它工作。如果有人能指出我正确的方向(满足我的要求的适当功能),那将不胜感激。

最佳答案

制作 HashSet<string>被排除的派系,然后使用这个集合来过滤你的卡片:

var excludedFactionSet = new HashSet<string>(excludedFactions);
cardsVM.Cards = repository.Cards
.Where(c => !excludedFactionSet.Contains(c.Factions))
.ToList();

请注意,使用 excludedFactions直接也是可以的。但是,使用 HashSet<string>使 Contains(f)检查工作的时间是恒定的,而不是线性的。

关于c# - 根据字符串属性是否包含另一个 List<string> 的任何字符串值来过滤 IEnumerable<object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49225811/

25 4 0