gpt4 book ai didi

c# - 从列表中删除所有内容,其中每行不包含另一个列表中的任何项目

转载 作者:太空狗 更新时间:2023-10-30 01:05:18 26 4
gpt4 key购买 nike

对于它的值(value),我花了一些时间查看下面的相关帖子,除了它在具有多个属性而不是两个独立列表的同一个列表上工作,也不涉及文本包含比较而不是项目匹配。

How to remove all objects from List<object> where object.variable exists at least once in any other object.variable2?

我有一个充满水果的字符串列表,叫做“fruits”

Apple
Orange
Banana

我还有一个名为 products 的字符串列表,其中包含一些水果(加上其他杂项信息)和一些其他产品。

ShoeFromNike
ApplePie
OrangeDrink

我需要从第二个列表中删除所有项目,其中每一行都不包含水果列表中列出的任何项目。

最终结果将是产品列表仅包含:

ApplePie
OrangeDrink

我最好的迭代方法:

//this fails becaucse as I remove items the indexes change and I remove the wrong items (I do realize I could reverse this logic and if it meets the criteria ADD it to a new list and i'm sure there's a better way.)
for (int i = 0; i < products.Count(); i++)
{
bool foundMatch = false;
foreach (string fruit in fruits)
if (products[i].Contains(fruit))
foundMatch = true;

if (foundMatch == false)
products.Remove(products[i]);
}

我最好的 lambda 方法:

        products.RemoveAll(p => !p.Contains(fruits.Select(f=> f)));

最佳答案

我个人比较喜欢用.Any(),感觉更适合我;

    products.RemoveAll(p => !fruits.Any(f => f.IndexOf(p, StringComparison.CurrentCultureIgnoreCase) >= 0));

关于c# - 从列表中删除所有内容,其中每行不包含另一个列表中的任何项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19365168/

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