none
LINQ query erweitern RRS feed

  • Frage

  • Hallo Leute,

    folgendes LINQ Query würde ich ganz gerne dahingehend optimieren, als dass:

    • der Suchbegriff caseinsensitive ist
    • angezeigt wird, an welcher Listenposition der Treffer erfolgte
    List<string> listeNames = new List<string>(new string[] { "Adams", "Arthur", "Buchananan", "Bush", "Carter", "Cleveland", "Eisenhower", "Edison", "Grant", "Garfiel", "Kennedy", "Madison", "McKinley" });
    Console.Write("Bitte Suchbegriff eingeben:");
    string begriff = Console.ReadLine();
    string expression = listeNames.Where(n => n.Equals(begriff)).DefaultIfEmpty(begriff + " nicht vorhanden").First();
    Console.ForegroundColor = ConsoleColor.Green;
    if(expression == begriff)
       Console.WriteLine("{0} wurde in der Liste gefunden", begriff);
    else {
      Console.ForegroundColor = ConsoleColor.Red;
      Console.WriteLine(expression);
    }



    • Bearbeitet tklustig Freitag, 15. Februar 2019 08:44
    Freitag, 15. Februar 2019 08:43

Antworten

  • Hi,

    Equals hat mehrere Überladungen, davon eine mit einem Übergabeparameter vom Typ StringComparison.

    ...n.Equals( begriff, StringComparison.CurrentCultureIgnoreCase )....

    Die Listenposition kannst Du IMHO nicht ermitteln, wenn deine List<T> nur aus Strings besteht. Hier würde sich dann eher eine List<EigeneKlasse> anbieten, in der Du zwei Werte mitführst, bspw. eine ID und einen String.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport



    Freitag, 15. Februar 2019 09:01
    Moderator