HOW TO

ROW_NUMBER w LINQ

Czy potrzebowaliście kiedyś w LINQ dodać porządkowanie elementów takie jak w SQL?

Oto jak można to zrobić:

int orderNumber = 1;
var list = (from item in items 
orderby item.Value // tu może być oczywiście inny warunek 
select new RandomItem() { Value = item.Value, OrderNumber = orderNumber++ }).ToList();

Oczywiście jeżeli ktoś preferuje można to zapytanie zamienić na lambdy :)

int orderNumber = 1;
var list = items.OrderBy(item => item.Value) // tu może być oczywiście inny warunek 
     .Select(item => new RandomItem() {Value = item.Value, OrderNumber = orderNumber++})
     .ToList()

TZG – Scrum

Oto materiały, z których korzystałem – a właściwie z przyczyn technicznych starałem się korzystać podczas spotkania dotyczącego metodyki SCRUM.

SCRUM TZG

Polecam również zapoznanie się z checklistą, o której mówiłem na zakończenie. Można ją znaleźć (w różnych wersjach językowych!) na stronie http://www.crisp.se/gratis-material-och-guider/scrum-checklist


[WP8] Screenshot

Windows Phone 8 w przeciwieństwie do poprzedniej wersji systemu umożliwia tworzenie screenshotów na urządzeniu. Aby to zrobić wystarczy jendocześnie wscisnąć przyciski: “Power” i “Start”. Screen, który w ten sposób powstaje trafia do Pictures -> Albums -> Screenshots, skąd możemy go wysłać mailem, wrzucić na Facebooka, Skydrive etc, czyli po prostu podzielić się nim :)


Pytanie – rozwiązanie [8] Podgląd źródła RSS

Przy okazji testów związanych ze standardem OData oraz WCF Data Services przyszło mi zmierzyć się z pewnym, jak się później okazało dość błachym problemem. Chodziło mianowicie o wyłączenie w przeglądarce internetowej przetworzonej zawartości RSS i udostepnienie jej w surowej formie.
Oto dane przetworzone przez przeglądarkę:

Jak widać, nie można z nich dowiedzieć się zbyt wiele. A oto format, który jest moim celem.

Aby to osiągnąć przenosimy się do opcji przeglądarki internetowej (w moim przypadku IE – wygodnie mi się z nią pracuje w kontekście debugowania aplikacji uruchamianych z Visual Studio), wybieramy zakładkę “Zawartość” (Content). Wybieramy konfigurację źródeł RSS w której odznaczamy opcję widoczną na rysunku poniżej.

Gotowe! Teraz można już korzystać z dobrodziejstw WCF Data Services i móc je swobodnie “podglądać” :)


Pytanie – rozwiązanie [7] – WP7 jak rozpoznać Theme

Aby aplikacje tworzone na platformie Windows Phone 7 dawały użytkownikowi jeszcze większy komfort korzystania warto dostosować UI do aktualnych ustawień telefonu. Możemy to osiągnąć między innymi rozpoznając wybrany przez niego motyw (theme).  W tym celu korzystamy z prostego enuma oraz metody widocznej na poniższym listingu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public enum Theme
{
	Light,
	Dark
}
 
public static Theme PhoneTheme
{
	get
	{
		if (Application.Current.Resources["PhoneBackgroundColor"].ToString() == "#FF000000")
			return Theme.Dark;
		else
			return Theme.Light;
	}
}

Pytanie – rozwiązanie [6] – jak odwrócić string

Przy okazji przygotowywania testowego serwisu na 2nd Silesian Code Camp zastanawiałem się jak najwygodniej odwrócić łańcuch znaków (string). Poza oczywistym rozwiązaniem wykorzystującym odwracanie tablicy w pętli, w oko wpadł mi następujący kawałek kodu, który w przejrzysty sposób rozwiązuje to zadanie:

1
2
3
4
5
6
public string Reverse(string str)
{
	char[] charArray = str.ToCharArray(); 
	Array.Reverse(charArray);
	return new string(charArray);
}

Pytanie – rozwiązanie [5] Unable to launch asp.net development server because port is in use

Podczas pracy z Visual Studio i aplikacjami hostowanymi przez serwer www możemy natrafić na błąd o następującej treści:

Unable to launch asp.net development server because port is in use“.

Nie pomaga tu niestety modyfikacja portu we właściwościach projektu itp. Rozwiązaniem przyczyny na 90% jest fakt, że posiadasz zainstalowany pakiet antywirusowy ESET NOD, który to niestety blokuje możliwość uruchomienia wbudowanego w VS serwera.
Rozwiązanie problemu jest nastepujące: W opcjach przechodzimy do sekcji

PL:
Ustawienia zaawansowane => Antywirus i antyspyware => Ochrona dostępu do stron internetowych => Protokoły HTTP i HTTPS => Przeglądarki internetowe.

EN:
Advanced firewall setup => Antivirus & anti spyware => Web access protection => HTTP => Webbrowsers

Na liście odszukujemy Visual Studio i odznaczamy checkbox (nie chcemy aby filtrowanie było włączone). Po zapisaniu ustawień NOD’a możemy uruchomić debugowanie.

Jeżeli jesteś w pozostałych 10% – niestety musisz szukać dalej.


Pytanie – rozwiązanie [4] MVC – jak szybko przejść z widoku do kontrolera

Podczas pracy z projektem MVC i edycji widoku mamy czasem potrzebę szybko przenieść się do klasy kontrolera. Aby to zrobić wystarczy na oknie widoku otworzyć menu kontekstowe i wybrać opcję “Go To Controller” jak na poniższym obrazku.

Go To Controller


Pytanie – rozwiązanie [3] – znikająca solucja w Solution Explorer

Gdy w Visual Studio 2008 tworzymy nową solucję, w której skład wchodzi jeden projekt domyślnym zachowaniem VS jest ukrycie jej w Solution Explorerze. Czy jest to problem? Tak, gdy chcemy dodać do solucji kolejny projekt… Można to obejść dodając do pustej solucji “Solution Folder”, a następnie dodawać kolejne projekty. Istnieje jednak prostsze rozwiązanie. Wystarczy wejść do menu:

Tools -> Options -> Projects and Solutions i zaznaczyć opcję “Always show solution“.

Na szczęście problem ten nie dotyczy Visual Studio 2010, gdyż opcja ta jest domyślnie zaznaczona :)


Pytanie – rozwiązanie [2] WPF – przesuwanie okna z WindowState=None

W poprzednim poście z serii “Pytanie – rozwiązanie” pisałem jak można usunąć obramowanie i domyślny pasek okna. Niestety powoduje to pewien problem dotyczący przesuwania tak zdefiniowanego okna po ekranie. Szukając po sieci znalazłem rozwiązania sięgające do PInvoke i wysyłania sygnałów do okna. Całość niestety zajmowała ładnych kilkadziesiąt linii kodu. Okazuje się jednak, że jest rozwiązanie mieszczące się w dosłownie jednej linijce! Odpowiedź na pytanie “Jak przesuwać okno z ustawionym WindowState=None” składa się z trzech elementów:

a) Do okna dodajemy sobie element, który będzie odpowiedzialny za możliwość przesuwania okna
b) dodajemy do niego obsługę zdarzenia “MouseLeftButtonDown
c) we wnętrzu metody wpisujemy jedną linijkę:
DragMove();

Teraz bez najmniejszych problemów umożliwimy użytkownikowi manipulację naszym oknem nawet gdy nie ma ono górnego paska.


  • O mnie

    Maciej Grabek

    Moje profile na:

    MVP

    Codeguru.pl GoldenLine
    Twitter CodeProject

  • english version
  • Polecam

  • Copyright © Maciej Grabek. All rights reserved.
    Powered by WordPress
    %d bloggers like this: