gpt4 book ai didi

c# - 将列表拆分为子列表,List.Contains() 找不到匹配项

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:52 25 4
gpt4 key购买 nike

我有 2 个列表,PlanetsFavorites。它们包含由空格分隔的多个单词。

我按空格将列表拆分为子列表。

现在我想检查 Planets 是否包含来自 Favorites 的名称。

但是 Planets.Contains() 没有找到匹配项。

http://rextester.com/YLOG10363

// Planets List
//
List<string> Planets = new List<string>();
Planets.Add("First Mercury Gray");
Planets.Add("Second Venus Yellow");
Planets.Add("Third Earth Blue");
Planets.Add("Fourth Mars Red");

// Favorites List
//
List<string> Favorites = new List<string>();
Favorites.Add("Venus Hot");
Favorites.Add("Mars Cold");

// Sublists
//
string[] arrPlanets = null;
string[] arrFavorites = null;
List<string> Order = new List<string>();
List<string> Names = new List<string>();
List<string> Colors = new List<string>();



// In each Line of Planets & Favorites Lists, Split by Space
// Add Word to it's Sublist
//
for (int i = 0; i < Planets.Count; i++)
{
// Create Planet Sublists
arrPlanets = Convert.ToString(Planets[i]).Split(' ');
Order.Add(arrPlanets[0]);
Names.Add(arrPlanets[1]);
Colors.Add(arrPlanets[2]);

// Create Favorites Sublist
// Prevent Favorites index from going out of range
if (i < Favorites.Count())
{
arrFavorites = Convert.ToString(Favorites[i]).Split(' ');

// Display Message if Planets List Contains a Name from Favorites
//
if (Planets.Contains(arrFavorites[0]))
{
Console.WriteLine("Favorite Detected.");
}
}
}

最佳答案

好的,我已经查看了所有答案,您可能也想看看这种可能性,因为它代表了对您的代码进行最少数量的重构:

替换

if (Planets.Contains(arrFavorites[0]))

if (Planets.Any(p => p.Contains(arrFavorites[0])))

不是最高效的,因为有更好的算法来检查匹配项。但是看看你的代码,它似乎并不是你所追求的最重要的事情。那么,我的方法可能是有道理的。

希望对您有所帮助。

关于c# - 将列表拆分为子列表,List.Contains() 找不到匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45600922/

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