【问题标题】:Searching a list C#搜索列表 C#
【发布时间】:2017-11-20 09:48:39
【问题描述】:

希望一切都好。

我在这里遇到一个简单的问题。我正在尝试创建一个控制台应用程序,允许您搜索列表中的单词(通过一个或多个字符,即 u = 用户、用户组)。

我似乎无法克服这个错误: 错误 CS0305 使用通用类型“列表”需要 1 个类型参数 wordSearch c:\Projects\wordSearch\wordSearch\Program.cs 36 Active

请在下面找到我的代码.....欢迎任何帮助提前谢谢您。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace wordSearch
{


public class MyList<T> { }
public class TestList<T> { }

class MyList
{
    public static void Main()
    {

        string searchKeyword = "o";

        List<string> items = new List<string>();
        items.Add("User");
        items.Add("User Groups");
        items.Add("User Activity Log");
        items.Add("Report Designer");
        items.Add("Report Activity Log");



        List<string> searchResults = items.FindAll(u => 
         u.Contains(searchKeyword));


            Console.WriteLine("Please type in the first letter of item you 
            are looking for:");
            Console.ReadLine();

        foreach (var result in System.Collections.Generic.List.Where(u => 
         u.IndexOf(mySearchString) == 0))
        {
            Console.WriteLine("User, User Groups, User Activity Log");
            Console.ReadKey();
        }
       foreach (var result in List.Where(r => r.IndexOf(mySearchString) == 
        0))
        {
            Console.WriteLine("Report Desinger, Report Activity Log");
            Console.ReadKey();
        }
    }
}

}

【问题讨论】:

  • 你觉得List.Where(...)在这里做什么?
  • 您使用变量mySearchString,但没有定义它。请在代码示例中修复它。
  • 所有“List.Where”位都必须是项目。Where ....您正在使用您的列表,它有数据

标签: c# sql list search console


【解决方案1】:

您的代码存在两个问题:

  1. 您必须保存用户的输入(“...用户正在寻找的第一个字母...”),例如在您已用作过滤器的mySearchString 中。
  2. 你必须查询和扫描itemsinstance,而不是System.Collections.Generic.ListListtype

你可以这样说:

  ...

  Console.WriteLine("Please type in the first letter of item you are looking for:");

  //DONE: user input saved
  string mySearchString = Console.ReadLine();

  //DONE: we scan items, not List 
  foreach (var result in items.Where(u => u.IndexOf(mySearchString) == 0)) {
      Console.WriteLine("User, User Groups, User Activity Log");
      Console.ReadKey();
  }

  // DONE: we scan items not List
  foreach (var result in items.Where(r => r.IndexOf(mySearchString) == 0)) {
    Console.WriteLine("Report Desinger, Report Activity Log");
    Console.ReadKey();
  }

  ...

编辑:看来实际请求是在循环中查询列表,foreach不是复制粘贴,是这样的:

public static void Main() {
  List<string> items = new List<string>() {
    "User",
    "User Groups",
    "User Activity Log",
    "Report Designer",
    "Report Activity Log",
  }

  while (true) {
    Console.WriteLine("Please type in the first letter of item you are looking for:");
    Console.WriteLine("Prease press enter (i.e. type an empty string) to quit"); 

    string mySearchString = Console.ReadLine();

    if (string.IsNullOrEmpty(mySearchString)) 
      break;

    foreach (var item in items.Where(r => r.IndexOf(mySearchString) == 0))
      Console.WriteLine(item);

    Console.WriteLine();
  }
}

【讨论】:

  • 感谢 Dmitry 和大家提出的所有建设性批评和发人深省的问题。
猜你喜欢
  • 2011-06-20
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2011-03-27
  • 2021-04-09
  • 2011-07-28
相关资源
最近更新 更多