• 14 odgovora
  • 5.939 pregleda
LINQ i traženje po svim kolonama 30.06.2015. u 17:52 · pre 137 meseci #1
Pozdrav!

Kako da kreiram LINQ upit koji omogućava pretragu po svim kolonama ?

Ja sam probao ovako:

Code:
 var queryX =  from tik in Tikets
                         where
                              (tik.Adresa != null && tik.Adresa.Contains("x"))
                             
                              || (tik.DodeljenKorisniku != null && tik.DodeljenKorisniku.Contains("x"))
                             [b] || (tik.Id_tiket != null && tik.Id_tiket.Equals(int.Parse("x")))[/b]
                              || (tik.ImePrezime != null && tik.ImePrezime.Contains("x"))
                              || (tik.Korisnik_evidentirao != null && tik.Korisnik_evidentirao.Contains("x"))
                              || (tik.Telefon != null && tik.Telefon.Contains("x"))
                              || (tik.TelefonMob != null && tik.TelefonMob.Contains("x"))
                            
                         select tik;
                         
                          queryX.ToList();
            
             queryX.Dump();



Ovo je primer za LINQPad....

Ali imam problem kako da tražim po Int kolonama i Date

Ako neko zna...molim za pomoć

Hvala
Re: LINQ i traženje po svim kolonama 30.06.2015. u 18:17 · pre 137 meseci #2
Mozes ih prebaciti u string za datum npr. ToShortDateString() i stavljaj ToLower() ako neces case sensitive, npr.
tik.Adresa.ToLower().Contains(tbSearch.Text.ToLower())
Re: LINQ i traženje po svim kolonama 30.06.2015. u 18:22 · pre 137 meseci #5
Citat:
patak_daca:
Pozdrav!

Hvala!!

Ali imam problem jer kada unesem string izbacuje mi grešku kod polja koja su Int.

Koju gresku?
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: LINQ i traženje po svim kolonama 30.06.2015. u 18:23 · pre 137 meseci #6
Pozdrav!

Probao sam ali dobijem grešku:

LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.

Hvala!
Re: LINQ i traženje po svim kolonama 30.06.2015. u 18:25 · pre 137 meseci #7
U LINQPadu ovaj code radi odlično:

Code:
int data3;

var queryX =  from tik in Tikets
                         where
                              (tik.Adresa != null && tik.Adresa.Contains("x"))
                             
                              || (tik.DodeljenKorisniku != null && tik.DodeljenKorisniku.Contains("x"))
                              || (tik.Id_tiket != null && tik.Id_tiket.Equals(int.TryParse("x", out data3)))
                              || (tik.ImePrezime != null && tik.ImePrezime.Contains("x"))
                              || (tik.Korisnik_evidentirao != null && tik.Korisnik_evidentirao.Contains("martin"))
                              || (tik.Telefon != null && tik.Telefon.Contains("x"))
                              || (tik.TelefonMob != null && tik.TelefonMob.Contains("x"))
                            
                         select tik;
                         
            queryX.ToList();
            
             queryX.Dump();


A kda ga primenim u VS prijavljuje grešku.
Re: LINQ i traženje po svim kolonama 30.06.2015. u 18:38 · pre 137 meseci #8
Citat:
patak_daca:
Probao sam ali dobijem grešku:

LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.


OK, zasto li je imam osecaj da sam bez problema koristio ToString sa linq2sql/EF...
U svakom slucaju, problem je taj sto to nije klasican Linq to objects koji se izvrsava na klijentu vec se parsira i konvertuje u sql. Posto engine nema podrsku za ToString() ne moze ni da ga konvertuje u sql.
Nemam trenutno ideju za resenje osim najbanalnije - da filtriranje po int-ovima i datetime-ovima uradis na klijentu.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: LINQ i traženje po svim kolonama 30.06.2015. u 18:44 · pre 137 meseci #9
Pozdrav!

Našao sam rešenje, možda nije nešto ali radi...

Code:
  int myInt;
                int broj=0;
              
                bool isValid = int.TryParse(trazi, out myInt);
                if (isValid)
                {
                    broj = Int32.Parse(trazi);
                }
                else 
                
                {
                    broj = 0;
                }



i onda "broj" "ubacim" ..


Code:
...
 || (tik.Id_tiket != null && tik.Id_tiket.Equals(broj))
...


Re: LINQ i traženje po svim kolonama 01.07.2015. u 18:09 · pre 137 meseci #12
Pozdrav!

Probao sam sa dva kriterijuma.
Ukucam u textbox dva parametra, npr. patak, prvi

Trebao bi da filtriram po svim kolonama sa parametrima "patak" i "prvi"
probao sam sa:

Code:
queryX = from tik in queryX
                            join vr in baza_kon.VrsteRadovas on tik.Id_vrste_rada equals vr.Id_vrste_rada
                            join ms in baza_kon.Gradovis on tik.Id_mesto equals ms.Id_mesto
                            where
                                 (tik.Adresa != null && tik.Adresa.Contains(prva_rec))
                                 || (tik.DodeljenKorisniku != null && tik.DodeljenKorisniku.Contains(prva_rec))
                                 || (tik.Id_tiket != null && tik.Id_tiket.Equals(prvi_broj))
                                 || (tik.ImePrezime != null && tik.ImePrezime.Contains(prva_rec))
                                 || (tik.Telefon != null && tik.Telefon.Contains(prva_rec))
                                 || (tik.TelefonMob != null && tik.TelefonMob.Contains(prva_rec))
                                 || (vr.NazivVrsteRada != null && vr.NazivVrsteRada.Contains(prva_rec))
                                 || (ms.NazivGrada != null && ms.NazivGrada.Contains(prva_rec))
                                 || (tik.UserName != null && tik.UserName.Contains(prva_rec))

                                 ||

                                 (tik.Adresa != null && tik.Adresa.Contains(druga_rec))
                                 || (tik.DodeljenKorisniku != null && tik.DodeljenKorisniku.Contains(druga_rec))
                                 || (tik.Id_tiket != null && tik.Id_tiket.Equals(drugi_broj))
                                 || (tik.ImePrezime != null && tik.ImePrezime.Contains(druga_rec))
                                 || (tik.Telefon != null && tik.Telefon.Contains(druga_rec))
                                 || (tik.TelefonMob != null && tik.TelefonMob.Contains(druga_rec))
                                 || (vr.NazivVrsteRada != null && vr.NazivVrsteRada.Contains(druga_rec))
                                 || (ms.NazivGrada != null && ms.NazivGrada.Contains(druga_rec))
                                 || (tik.UserName != null && tik.UserName.Contains(druga_rec))



                            select tik;


ali vraća podatke samo po prvom parametru...( ovo je bio samo test , znam da nije rešenje )

Ako neko može da pomogne...
Hvala puno!

Patak
Re: LINQ i traženje po svim kolonama 07.07.2015. u 11:16 · pre 137 meseci #14
Mislim da je veoma pogrešno po svaku cenu forsirati LINQ za određene stvari koje nisu direktno podržane,
i praviti nekakve budževine samo da bi se zvalo da radi preko LINQ-a kao npr. taj full text search.
LINQ je lep i zgodan ali jednostavno ne podržava sve što podržavaju RDBMS.

Lepo napiši SQL upit ili stored proceduru i stvar rešena.
Re: LINQ i traženje po svim kolonama 07.07.2015. u 11:20 · pre 137 meseci #15
Pozdrav!

Čitao sa da ne podržava "Fulltext searching" direktno, nego "onako" malo budža...

Hvala puno!

Pozdrav!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme