Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# hledání v DataSet

Zdravím lidi,

potřeboval bych pomoci s úpravou hledání ve Win Form v jazyce C#, kde mám náhled databáze DataSet a nad ním Textbox a tlačítko pro hledání.

Vše funguje, ale problém je v tom, že když chci vyhledat nějaký výsledek přes TextBox tak musím rozlišovat velká a malá písmena, abych dospěl nějakého výsledku.
Šlo by nějak upravit tento kód, aby bylo možné psát do TextBoxu jak velké a malé znaky a našlo by mi to co má ?

private void Test_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(Hledat.Text))
            {
                //you can use linq to query data
                var query = from o in App.tKontakty
                            where o.jmeno.Contains(Hledat.Text)
                                || o.popis.Contains(Hledat.Text)
                                || o.linka.Contains(Hledat.Text)
                                || o.mistnost.Contains(Hledat.Text)
                                || o.patro.Contains(Hledat.Text)
                                || o.poznamka.Contains(Hledat.Text)
                            select o;
                dataGridView.DataSource = query.ToList();
            }
            else
            {
                dataGridView.DataSource = tKontaktyBindingSource;
            }
        }

Děkuji všem za jakoukoliv radu.

Řešení:

Přidáš si do projektu novou třídu:

using System;

public static class StringExtensions
{
   public static bool ContainsIgnoreCase(this String str, String substring)
   {                            
      return str.IndexOf(substring, StringComparison.CurrentCultureIgnoreCase) >= 0;                      
   }
}

A pak ten kód nahradíš na:

var query = from o in App.tKontakty
    where o.jmeno.ContainsIgnoreCase(Hledat.Text)
    || o.popis.ContainsIgnoreCase(Hledat.Text)
    || o.linka.ContainsIgnoreCase(Hledat.Text)
    || o.mistnost.ContainsIgnoreCase(Hledat.Text)
    || o.patro.ContainsIgnoreCase(Hledat.Text)
    || o.poznamka.ContainsIgnoreCase(Hledat.Text)
    select o;

Samozřejmě to ContainsIgnoreCase si můžeš přejmenovat na něco jiného.

A malá poznámka: už Komenský říkal, že se má učit od jednoduchého a pak teprve přidávat složité. Zkus to taky tak. Protože evidentně neznáš základy a začínáš věcmi, na které zatím nestačíš.

Předmět Autor Datum
Třeba tak, že si napíšeš extension metodu. https://docs.microsoft.com/cs-cz/dotnet/api/system.string…
Wikan 03.04.2019 22:24
Wikan
Teprve se učím začátky programování. :-( Tak, tak že si zkouším podle nějakých návodů dělat co potře…
D0Mikk 03.04.2019 22:41
D0Mikk
Přidáš si do projektu novou třídu: using System; public static class StringExtensions { public stat…
Wikan 04.04.2019 07:29
Wikan
Děkuji za pomoc. Učím se základy tím že si udělám něco lehčího, tohle je spíš taková výjimka. Každo…
D0Mikk 04.04.2019 08:33
D0Mikk
Tak si dej breakpoint do metody Test_Click a uvidíš, co to dělá.
Wikan 04.04.2019 08:44
Wikan
Už to vše funguje, máš mé velké díky. Problém byl v nedopsaném řádku: dataGridView.DataSource = qu… poslední
D0Mikk 04.04.2019 13:32
D0Mikk

Teprve se učím začátky programování. :-( Tak, tak že si zkouším podle nějakých návodů dělat co potřebuji, pak si to upravím podle sebe a něco nastuduji na netu. Tohle by mělo být něco jako adresář, ale nějak mi to vázne na tomhle.

Mohl by jsi mi to prosím nějak opravit, protože teď přesně nechápu jak bych to udělal.
Už se s tím dělám pěknou řádku hodin a asi na to nemám kapacitu zatím.

Byl bych ti moc vděčný.
Děkuji.

Přidáš si do projektu novou třídu:

using System;

public static class StringExtensions
{
   public static bool ContainsIgnoreCase(this String str, String substring)
   {                            
      return str.IndexOf(substring, StringComparison.CurrentCultureIgnoreCase) >= 0;                      
   }
}

A pak ten kód nahradíš na:

var query = from o in App.tKontakty
    where o.jmeno.ContainsIgnoreCase(Hledat.Text)
    || o.popis.ContainsIgnoreCase(Hledat.Text)
    || o.linka.ContainsIgnoreCase(Hledat.Text)
    || o.mistnost.ContainsIgnoreCase(Hledat.Text)
    || o.patro.ContainsIgnoreCase(Hledat.Text)
    || o.poznamka.ContainsIgnoreCase(Hledat.Text)
    select o;

Samozřejmě to ContainsIgnoreCase si můžeš přejmenovat na něco jiného.

A malá poznámka: už Komenský říkal, že se má učit od jednoduchého a pak teprve přidávat složité. Zkus to taky tak. Protože evidentně neznáš základy a začínáš věcmi, na které zatím nestačíš.

Zpět do poradny Odpovědět na původní otázku Nahoru