var wynik_plus_jeden = ( from blahblahblah
blahblahblah
blahblahblah
select blahblahblah
)
.ToList() // <- rozwiazanie Twojego problemu
.Concat(new[] { mojdodatkowyobiektwyniku} );
problem w 1'wszej czesci Twojego watku polega na tym, ze LINQ stara sie przetlumaczyc CALE zapytanie na postac SQL'owa do wykonania przez serwer. Stad wynika, ze liste konkretnych wartosci mozna podawac tylko do .Contains() -> bo jedyna skladnia SQL ktora akceptuje wylicznie to operator IN ("where blah in (a,b,c,d,..)") !
tak wiec, Concat() raczej nie jest zepsuty :) a jedyne co musisz zrobic to w pewnym momenciel, uwaga, ladne fraza: sprzęgnąc LinqToSql z LinqToObjects, czyli podpowiedziec providerowi GDZIE zakonczyc budowanie SQL'a -- czyli, banalne .ToList() powodujace wiadomo co.. Wszystko po .ToList() bedzie wykonane na już-sciagnietych obiektach.
Z innej strony patrzac: po co wysylac ekstra wiersze do bazy zeby je dokleila do wynikow? wykonaj zapytanie (->ToList, ToArray...), a potem do wyniku doklej wyniki:)
edit: na drugi problem: to juz gorzej. jezeli to to ma byc JOIN'wane z innymi tablicami, to masz DUŻY problem, z powodu teog co podalem wyzej. LINQ jest to odpalania Select'ow, a Ty potrzebujesz chwilowo dopisac wiersz ew. utworzyc tabele tymczasowa w sesji i ja z joinowac.. na obecne 3 minuty nie widze prostego rozwiazania poza dwoma selektami - raz join, drugi raz select po tyhc-innych-joinowanych-tablicach na podstawie wyliczeina powstalego z tyhc-wierszy-ktore-chciales-dodac, i na koniec juz na obiektach union/concat obu wynikow..
ew. mozesz probowac from X in (Y.Concat(Z)) ale wątpie by dało rade. niestety, Linq to subset SQL'a, nie wszystko da sie zrobic wprost tak samo:|