Linq string concat nem működik

Linq string concat nem működik
2020-06-03T16:40:15+02:00
2020-06-05T06:53:00+02:00
2022-10-15T21:16:00+02:00
afterbit
Sziasztok!
Adott az alábbi sor c#-ban:

var wtf = context.Person.Where(p => (p.FirstName + " " + p.LastName).Contains(filter));
Elvileg össze kellene fűznie, de sehogy sem hajlandó futni. Ha debuggerben nézem, akkor erre a sorra odaér, a következőben ahol kiíratnám pedig átugorja. Sajnos nem tudom mi a gond, az átugrás valószínű azért van mert üreshalmazt kap vissza. Viszont ha linqpad-dal ugyanezt futtatom, akkor minden rendben van
Mutasd a teljes hozzászólást!
Szia!

1. Az EF nem végzi el az adatbázis lekérést a Where-nél, csak ha meghívod a ToList-et (ez kipróbálható pl. az SSMS Profiler-ben, nem tudom, hogy a MySQL Workbench tartalmaz-e ilyet)
2. Én egyáltalán nem fűznék össze semmit. Szintén lusta vagyok, mint a mellettem ülő bármelyik fejlesztő, de ez így nem eléggé pontos egy kereséshez (pl. filter= "Áron", filter = "Jó", filter = "Jó Áron", filter = "Áron Jó"). Mi lenne, ha két mezővel dolgoznál?
Én valami hasonlót írnék:

var wtf = context.Person.AsQueryable(); //init as queryable if (!string.IsNullOrWhiteSpace(FilterFirstName)) //do I need to filter? { wtf = wtf.Where(u => u.FirstName.Contains(FilterFirstName)); } if (!string.IsNullOrWhiteSpace(FilterLastName)) //do I need to filter? { wtf = wtf.Where(u => u.LastName.Contains(FilterLastName)); } List<Person> People = wtf .OrderBy(x => x.FirstName) .ThenBy(x => x.LastName) .ToList(); // put the result to a list
Mutasd a teljes hozzászólást!

  • Ennek a szűrési feltételnek jónak kell lennie. Kipróbáltam, nem a where "rontja el".

    Ha szűrés nélkül megnézed a
    context.Person
    -t, akkor ott megvannak az adatsoraid?
    Mutasd a teljes hozzászólást!
  • Esetleg kisbetű, nagybetű vagy ékezet a szövegben nem okozhatja a problémát?
    Mutasd a teljes hozzászólást!
  • Szia!

    1. Az EF nem végzi el az adatbázis lekérést a Where-nél, csak ha meghívod a ToList-et (ez kipróbálható pl. az SSMS Profiler-ben, nem tudom, hogy a MySQL Workbench tartalmaz-e ilyet)
    2. Én egyáltalán nem fűznék össze semmit. Szintén lusta vagyok, mint a mellettem ülő bármelyik fejlesztő, de ez így nem eléggé pontos egy kereséshez (pl. filter= "Áron", filter = "Jó", filter = "Jó Áron", filter = "Áron Jó"). Mi lenne, ha két mezővel dolgoznál?
    Én valami hasonlót írnék:

    var wtf = context.Person.AsQueryable(); //init as queryable if (!string.IsNullOrWhiteSpace(FilterFirstName)) //do I need to filter? { wtf = wtf.Where(u => u.FirstName.Contains(FilterFirstName)); } if (!string.IsNullOrWhiteSpace(FilterLastName)) //do I need to filter? { wtf = wtf.Where(u => u.LastName.Contains(FilterLastName)); } List<Person> People = wtf .OrderBy(x => x.FirstName) .ThenBy(x => x.LastName) .ToList(); // put the result to a list
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd