Soci (Soczó Zsolt) szakmai blogja

2009.12.23.

Boldog Karácsonyt!

Filed under: Élet — Soczó Zsolt @ 14:42

Nem küldök push jellegű üdvözlő emaileket, úgyis mindenkinek tele lesz a postaládája, inkább így, pull módon kívánok mindenkinek boldog, békés Karácsonyt. Gyerekeseknek meg betegségmenteset, a Karácsony sok gyereknél betegségeket hoz elő, mi eddig megúsztuk. :)

2009.12.08.

Szűrés opcionális paraméterekre LINQ-val

Filed under: .NET,C#,Linq,Szakmai élet — Soczó Zsolt @ 13:50

A feladvány, hogy van sok szűrési feltétel, ezekre szűrni kell, ha van érvényes értékük, vagy kihagyni a szűrésből, ha nincs.
A feladatra SQL Server esetén bool algebrás megoldást írnék:

select * from tabla
where 
(@p1 is null) or (@p1 = col1)
and
(@p2 is null) or (@p2 = col2)
...
option(recompile)

Az option hint azért kell, mert így a nullos paraméterek teljesen kiesnek a tervből, csak a valódi szűrésekre készül terv. Ez szerintem óriási dolog, érdemes észben tartani.

Ugyanezt a logikát linqval is el lehet játszani, ref típusokkal kb. így:

var x = from z in Valami
where (p1 == null) || (p1 = z.col1)
&&
(p2 == null) || (p2 = z.col2)

Egy másik megoldásban azt használjuk ki, hogy késleltetett módon értékelődnek ki a kifejezések, így lehet őket láncolni. Itt látható ez a megoldás, és még más megközelítések is.

A harmadik megoldásban írhatunk egy saját szűrő operátort is erre a célra. Az előbbi címről:

public static IQueryable WhereIf(
this IQueryable source, bool condition,
Expression> predicate)
{
if (condition)
return source.Where(predicate);
else
return source;
}

Nehéz megindokolni, melyik megoldás a jobb.

2009.12.01.

Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4

Filed under: .NET,C#,Szakmai élet — Soczó Zsolt @ 17:15

120 oldalas kis olvasmány, alig várom már, hogy legyen egy kis időm elolvasni.

Az tetszik a 4.0-ban, hogy végre megint hozzányúltak az alapokhoz, mint pl. a threadinghez.

Powered by WordPress