C# c在列表中查找关键字,并根据找到的项创建新列表

C# c在列表中查找关键字,并根据找到的项创建新列表,c#,list,C#,List,我正在学习c,有以下问题,我找不到解决办法 我正在尝试的代码是: string theString = "aaa XXX,bbb XXX,ccc XXX,aaa XXX"; List<string> listFromTheString= new List<string>(theString.Split(',')); List<string> listOfFoundItems = new List<string&g

我正在学习c,有以下问题,我找不到解决办法

我正在尝试的代码是:

string theString = "aaa XXX,bbb XXX,ccc XXX,aaa XXX";          
List<string> listFromTheString= new List<string>(theString.Split(','));           
List<string> listOfFoundItems = new List<string>();

for (int i = 0; i < (listFromTheString.Count); i++)
{
    if(listFromTheString[i].Contains("aaa"))
    {
        listOfFoundItems.Add(listFromTheString[i]);
    }   
}
如果发现一个特殊的关键字,我想遍历列表并在新列表中创建新项目。列表listOfFoundItems中未填入founds


你能告诉我我做错了什么吗

> P>我知道你想修正你的算法,但是一旦你这么做了,考虑一下这个表达式:

listofFoundItems = (from s in theString.Split(',')
                    where s.Contains("aaa")
                    select s).ToList();

使用LINQ可以更简洁地完成这一点:

        string theString = ("aaa XXX,bbb XXX,ccc XXX,aaa XXX");

        List<string> listFromTheString = new List<string>(theString.Split(','));

        List<string> listOfFoundItems = listFromTheString.Where(s => s.Contains("aaa")).ToList();
不过,您提供的代码确实有效

这里有一个备用的单行版本:

List<string> listOfFoundItems = theString.Split(',').Where(s => s.Contains("aaa")).ToList();

您提供的代码运行良好。鉴于此,我怀疑您可能存在一些字符串比较问题

此代码可能更适合您:

const string given = "aaa XXX,bbb XXX,ccc XXX,aaa XXX";
var givenSplit = new List<string>(given.Split(','));
var listOfFoundItems = new List<string>();

foreach(var item in givenSplit.Where(g => g.IndexOf("aAa", StringComparison.InvariantCultureIgnoreCase) > -1))
{
    listOfFoundItems.Add(item); 
}

// two items are added

您的代码运行良好。listOfFoundItems将包含2个条目。是什么让你认为代码出了问题?你的问题是什么?此代码成功运行,listOfFoundItems最终包含2个元素。我们不要贬低新用户,并建议如何解决他的问题,即使问题不是那么好和干净well@sll当前位置否决票是合法的。所提供的代码并没有说明问题,事实上,它完全符合我们的要求。这个问题似乎没有得到很好的阐述,代码似乎也很有效。我真丢脸。看来我的问题与我的环境有关。我认为我做错了,因为我没有太多的c语言经验。我在VVV工作。它有一个内置的c编辑器和编译器。我将新列表输出到一个字符串数组,以便在VV中进一步使用它。这似乎不太可能。搜索aaa时,输出为两项,但其中一项为空。当我为bbb服务时,我只拿回一件空的东西。我必须在VVV论坛中搜索答案。你可以从字符串中删除临时列表,也可以在单个列表中进行搜索query@sll是的,我把它稍微放大了一点,这样就不会让海报太激动了。我会用一行更新。
theString.Split(',').Where(p=>p.Contains("aaa")).ToList()
    string theString = ("aaa XXX,bbb XXX,ccc XXX,aaa XXX");

    List<string> listFromTheString = new List<string>(theString.Split(','));

    List<string> listOfKeywords = new List<string> { "aaa" };

    List<string> found = (from str in listFromTheString
                         where listOfKeywords.Any(keyword => str.Contains(keyword))
                         select str).ToList<string>();