C#:检查搜索词的列表并打印所有匹配值,或者如果不存在匹配值则显示 Not found
C#: Check list for search term and print all matching values, or display Not found if no matching values exist
我正在尝试向我的应用添加搜索选项。如果用户的搜索词存在于(字符串)列表中,则应显示该列表中的所有匹配元素。如果没有,则应显示“未找到”。我有 for 循环工作,但我似乎无法找到未找到条件应该去哪里。
for (int i = 0; i<myList.Count; i++)
{
if (myList[i].Contains(search))
{
WriteLine(myList[i]);
} else
{
WriteLine("not found");
}
}
由于您想要获得所有匹配项,因此您需要保留一个 运行 找到的匹配项列表。检查完列表中的所有项目后,您可以通过检查列表中有多少匹配项来确定是否找到 none。
var matches = new List<string>();
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(search))
{
matches.Add(myList[i]);
}
}
if (matches.Count == 0)
{
WriteLine("not found");
}
else
{
foreach (var match in matches)
{
WriteLine(match);
}
}
如果以后不需要匹配项,可以用 int 替换列表并在找到匹配项时递增它。如果在循环中找到匹配项,则将匹配项写入行。然后在你检查完列表中的所有项目后,你可以检查你的计数器是否为零,如果是,写一行“未找到”。
var counter = 0;
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(search))
{
WriteLine(myList[i]);
counter++;
}
}
if (counter == 0)
{
WriteLine("not found");
}
1.您可以使用 lambda 来解决您的问题。
很简单,但别忘了加上using System.Linq
。 Lambda 结果(包含所有需要的项目)将记录在变量 match
中,根据它的大小 match.Count()
您可以打印所有结果,如果没有任何内容可打印则出错。
var match = myList.Where(s => s.Contains(search));
if (match.Count() == 0) {
Console.WriteLine("Not found!");
} else {
foreach (var item in match) {
Console.WriteLine(item);
}
}
2。好老for-loop.
只需将所有匹配项添加到另一个列表,然后像在 lambda-case 中一样处理它们。
var match = new List<string>();
foreach (var item in myList) {
if (item.Contains(search)) {
match.Add(item);
}
}
if (match.Count() == 0){
Console.WriteLine("Nothing found!");
} else {
foreach (var item in match) {
Console.WriteLine(item);
}
}
总而言之,主要思想是将搜索结果存储在另一个变量中,然后使用它。
3。找到标志。
另一种方法是使用一些 bool
标志,并在我们发现某些东西时将其变为真。
bool foundFlag = false;
foreach (var item in myList) {
if (item.Contains(search)) {
foundFlag = true;
Console.WriteLine(item);
}
}
if (!foundFlag){
Console.WriteLine("Nothing found!");
}
我正在尝试向我的应用添加搜索选项。如果用户的搜索词存在于(字符串)列表中,则应显示该列表中的所有匹配元素。如果没有,则应显示“未找到”。我有 for 循环工作,但我似乎无法找到未找到条件应该去哪里。
for (int i = 0; i<myList.Count; i++)
{
if (myList[i].Contains(search))
{
WriteLine(myList[i]);
} else
{
WriteLine("not found");
}
}
由于您想要获得所有匹配项,因此您需要保留一个 运行 找到的匹配项列表。检查完列表中的所有项目后,您可以通过检查列表中有多少匹配项来确定是否找到 none。
var matches = new List<string>();
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(search))
{
matches.Add(myList[i]);
}
}
if (matches.Count == 0)
{
WriteLine("not found");
}
else
{
foreach (var match in matches)
{
WriteLine(match);
}
}
如果以后不需要匹配项,可以用 int 替换列表并在找到匹配项时递增它。如果在循环中找到匹配项,则将匹配项写入行。然后在你检查完列表中的所有项目后,你可以检查你的计数器是否为零,如果是,写一行“未找到”。
var counter = 0;
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(search))
{
WriteLine(myList[i]);
counter++;
}
}
if (counter == 0)
{
WriteLine("not found");
}
1.您可以使用 lambda 来解决您的问题。
很简单,但别忘了加上using System.Linq
。 Lambda 结果(包含所有需要的项目)将记录在变量 match
中,根据它的大小 match.Count()
您可以打印所有结果,如果没有任何内容可打印则出错。
var match = myList.Where(s => s.Contains(search));
if (match.Count() == 0) {
Console.WriteLine("Not found!");
} else {
foreach (var item in match) {
Console.WriteLine(item);
}
}
2。好老for-loop.
只需将所有匹配项添加到另一个列表,然后像在 lambda-case 中一样处理它们。
var match = new List<string>();
foreach (var item in myList) {
if (item.Contains(search)) {
match.Add(item);
}
}
if (match.Count() == 0){
Console.WriteLine("Nothing found!");
} else {
foreach (var item in match) {
Console.WriteLine(item);
}
}
总而言之,主要思想是将搜索结果存储在另一个变量中,然后使用它。
3。找到标志。
另一种方法是使用一些 bool
标志,并在我们发现某些东西时将其变为真。
bool foundFlag = false;
foreach (var item in myList) {
if (item.Contains(search)) {
foundFlag = true;
Console.WriteLine(item);
}
}
if (!foundFlag){
Console.WriteLine("Nothing found!");
}