Na platformie .NET od wersji 3.5 dostępna jest technologia LINQ oferująca uniwersalny mechanizm zadawania zapytań do obiektów. W tym wpisie pokażę w jaki sposób przy użyciu LINQ to XML przenieść dane z kolekcji obiektów do dokumentu XML, wczytać dane z pliku XML do kolekcji oraz zmodyfikować zawartość XML-a.
Ostatnimi czasy rozpocząłem naukę programowania pod Windows Phone 7. Szybko okazało się, że przy pisaniu jednej z testowych aplikacji, warunkiem koniecznym jej dalszego rozwoju stał się dostęp do bazy danych. Programowanie na platformę mobilną wiążę się jednak z wieloma ograniczeniami w stosunku do programowania aplikacji desktopowych i oczywiście nie ominęły one również samej bazy danych. W przypadku Windows Phone, możemy korzystać zatem tylko z SQL Server CE i wykorzystywać w tym celu wyłącznie LINQ t...
Mobile development 4557 dni, 15 godzin, 11 minut temu 179 źrodło rozwiń
Rozważmy następujący kod:IEnumerable
Niniejszy post jest kontynuacją cyklu o Reactive Extensions dla .NET ([RX 1], [RX 2], [RX 3], [RX 4], [RX 5], [RX 6], [RX 7], [RX 8]), dotyczyć on będzie możliwości wykorzystania LINQ na obserwowalnych kolekcjach i w RX. W uproszczeniu Language INtegrated Query (LINQ) to część technologii .NET i umożliwia zadawanie pytań na obiektach, a składnia LINQ przypomina trochę SQL (patrz Wikipedia). Cechą charakterystyczną LINQ jest to, że operuje ona na dowolnych kolekcjach oferujących iterator (czyli operuje n...
Programowanie rozproszone 4654 dni, 3 godziny, 51 minut temu 87 źrodło rozwiń
Używając LINQ należy pamiętać o takiej właściwości tego języka zapytań jak opóźnione wywoływanie (Diferred Execution). Polega to na tym, iż zapytanie jest wywoływanie dopiero wtedy, gdy jest to rzeczywiście potrzebne. Najczęściej dzieje się podczas wowoływania metody, która sprawdza całą kolekcje, którą przeszukujemy, takimi metodami są np. Count() ToList() Każda z tych metod, aby zwrócic wynik musi sprawdzić całą kolek...
Opis najciekawszych funkcji biblioteki MoreLinq.
Mój pingwin ma sklerozę. Czyli linq pod Linuxem Ciesząc się naszą aplikacją śmigającą pod Linuksem z biegiem czasu uświadamiamy sobie że bez bazy danych daleko nie zajdziemy. Możemy oczywiście podlinkować naszą aplikację pod jakiś serwer windowsowy z MS SQL na pokładzie. Ale po co komplikować sobie życie skoro mamy potężne bazy takie jak MySql , Oracle czy Postgresql. Postaram się jasno wyjaśnić how to do that ...
Kilka tygodni temu miałem za zadanie wygenerować na stronie tabelkę dla pewnych danych, z zastrzeżeniem, że ostatnie wiersze powinny zawierać sumę i średnią wszystkich komórek powyżej. Nic nadzwyczajnego. Jednak pojawił się jeden problem: źródłowa tabela takich danych nie posiadała. Oczywiste było, że takie wymaganie pojawi się zaraz w kolejnych miejscach. Postanowiłem więc poświęcić kilka minut na zamknięcie takiej funkcjonalności w osobnej metodzie. Dość naturalnym wydało mi się stworzenie odpowiednik...
Coraz częściej w projektach zaczynam używać LINQ i zaczynam dostrzegać zalety. Nie dość, że można w ten sposób trochę pisania kodu oraz zyskać na przejrzystości. Poniżej zamieszczę parę przykładów, w których pomału przerzucam się na LINQ.
Autor: Kilka dni temu w poście Statystyka… zapowiedziałem, iż postaram się zaproponować kawałki kodu, które umożliwią włączenie statystyk dla zapytań LINQ to SQL. Zadanie okazało się trochę trudniejsze niż myślałem, ale udało się coś osiągnąć. Zobaczmy jak.Rozwiązanie Naïve Pierwsze co przychodzi na myśl to proste rozszerzenie obiektu DataContext o nasze metody. Mniej więcej tak: publicstaticclassDataContextExt { publicstatic T WithStatistics
Bazy danych i XML 5022 dni, 23 godziny, 48 minut temu 44 źrodło rozwiń
Dzisiaj kolejny odcinek z serii "krótki kod prowadzącego". W tym odcinku zajmę się obiektem FormCollection (NameValueCollection). Obiekt ten jest dobrze znany każdemu programiście piszącemu w ASP.NET MVC. FormCollection jest to kolekcja przechowująca dane formularza przekazywanego do serwera podczas POSTa. Ot zwykły obiekt typu "kolekcja". Niestety przymiotnik "zwykły" po jakimś czas zaczął mi doskwierać. "Zwykłość" tego obiektu objawia się bowiem brakiem możliwości potraktowania g...
Po opublikowaniu mojego ostatniego wpisu dotyczącego LINQ i jego mniej znanych funkcjonalności i trików zastanawiałem się, czy w zbiorze metod oferowanych przez LINQ znajdzie się coś równie niedocenionego i równie użytecznego jak SelectMany(). Nie oczekiwałem zbyt wiele, jednak ku mojemu zaskoczeniu udało mi się odnaleźć perełkę w postaci przeciążenia metody Aggregate(). Przy okazji dowiedziałem się czegoś nowego o Where() i przypomniałem sobie o metodach służących ...
Od czasu do czasu mam w zwyczaju przeglądać cały swój kod i w razie potrzeby robić jego refaktoryzację, tak też się stało tydzień temu kiedy stwierdziłem, że zamiast dopisywać nową funkcjonalność do projektu Silverlight, doprowadzę do porządku to co już stworzyłem. Podczas przeglądania kodu, natrafiłem na taką o to extension method
Na mojej sesji podczas tegorocznego MTS-a pokazywałem w pewnym momencie odpytywanie źródła danych OData za pomocą narzędzia LINQPad. Zdziwiło mnie, jak wiele pytań po sesji miałem na jego temat, skąd pobrać, czy jest darmowe etc.. W związku z tym postanowiłem napisać kilka słów na jego temat i zachęcić do jego używania, ponieważ jest to bardzo fajne narzędzie. 1. Pobieranie i instalacja LINQPad dostępny jest w dwóch wersjach, z c...
Prawie trzy lata temu, w listopadzie 2007, światło dzienne ujrzał .NET Framework 3.5, a razem z nim LINQ. Przez ten czas w sieci pojawiły się dziesiątki artykułów opisujących Language Integrated Query, jego zalety, wady oraz możliwości. Przy okazji namiętnego refaktoringu części projektu Rankingu Sejmowego (również z użyciem LINQ) pomyślałem, że dobrze byłoby zebrać w jednym miejscu informacje dotyczące mniej znanych ale bardzo przydatnych trików związanych z wykorzystaniem LINQ. ...
Niejednokrotnie tworząc własne kolekcje danych, chcielibyśmy mieć swobodę ich edycji, filtrowania i przeszukiwania. Podstawowe operacje dostarczone przez interfejs kolekcji, nie rozpieszczają użytkowników. W takim momencie, każdy programista z zazdrością spogląda na kolegę, który zajmuje się bazą danych i który dzięki zapytaniom, może właściwie w dowolny sposób manipulować posiadanymi danymi. Jednak jeśli jesteś programistą .Net i korzystasz z tego Frameworka w wersji co najmniej 3.5 - to mam dla Ciebie ...
Architektura 5105 dni, 9 godzin, 16 minut temu 173 źrodło rozwiń
ObjectTrackingEnabled Dobrą praktyką jest ustawianie context.ObjectTrackingEnabled = false, gdy tylko odczytujemy jakieś dane.2. RunWithElevatedPrivilegesSPSecurity.RunWithElevatedPriviliges niestety nie działa z kodem LINQ To SharePoint. Istnieje jednak obejście, które znalazłem tutaj: public static void RunWithElevatedPriviliges(SPSecurity.CodeToRunElevated secureCode) { HttpContext backupCtxt = HttpContext.Current; try { // if there is a SPContext make it is as null so...
Bazy danych i XML 5116 dni, 5 godzin, 37 minut temu 24 źrodło rozwiń
Zamieszczam przykład zastosowania LINQ To SharePoint do pobierania, zapisywania, aktualizowania i usuwania danych z dwóch list powiązanych ze sobą lookup fieldem (relacja jeden do wielu).
Bazy danych i XML 5128 dni, 2 godziny, 17 minut temu 47 źrodło rozwiń
Autor: Dotychczas myślałem, że LINQ dopuszcza stosowanie zapytań tylko i wyłącznie w formie SQL-podobnej, tzn: view sourceprint?1 var zmienna = from x in y select x; Doczytałem dzisiaj jednak, że jest to jedna z dwóch metod umożliwiających konstruowanie zapytań do bazy danych. Ta znana mi metoda to tzw. składnia zapytań. Druga, którą kojarzyłem, ale nie wiedziałem, że jest alternatywą, to tzw. składnia lambda. Żeby nie zanudzać teorią przedstawiam poniżej przykład tego samego zapytania napisanego na d...
Bazy danych i XML 5161 dni, 19 godzin, 1 minutę temu 252 źrodło rozwiń
SharePoint 2010 jak można się na razie przekonać jest dużo bardziej dojrzałym produktem od poprzednich wersji. Wprowadzenie wielu nowych funkcji spowodowało, że ta platforma stała się bardziej potężna niż była do tej pory. Jedną z funkcji dostępnych już od .NET 3.0, a nie implementowanych do tej pory w SharePoint jest LINQ. Co to może nowego wnieść do sposobu pisania rozwiązań pod tę platformę, można się przekonać czytając ten post. Jest to pierwszy z dwóch postów opisujących tę technologię. W pierwszym ...