2010-12-15 11 views
40

Jest późno, więc to musi być coś głupiego. Mam LinqPad podłączony do mojej bazy danych i nie mogę uzyskać wyników dla najprostszych zapytań.LinqPad Nie zwraca wyników z C# Instrukcje

var q = from app in AppInstances 
select new { 
AppId = app.AppId 
}; 

Po uruchomieniu tego, LinqPad mówi, że zostało pomyślnie wykonane (tryb C# Statement). Nic nie zostaje zatrzymane.

mogę napisać następujący bardzo prosty lambda (tryb # ekspresji c):

AppInstances.Select (p => p.AppId) 

I to działa. Czemu? Wolałbym korzystać z funkcji budowania zapytań bez funkcji lambda. Jestem pewien, że to wszystko razem głupie.

Odpowiedz

62

Spodziewałbym się, że w trybie oświadczenia trzeba będzie zrobić coś takiego, jak zadzwonić pod numer q.Dump();, aby zobaczyć wyniki.

Ale jeśli chcesz tylko użyć wyrażeń zapytań, czemu nie zrobić tego z trybu wyrażeń? Wystarczy użyć wyrażenia:

from app in AppInstances 
select new { 
    AppId = app.AppId 
}; 

Albo zrobić to odpowiednik oryginalnego lambda:

from app in AppInstances 
select app.AppId 
+10

Czy nie wiesz, że zawsze zapomnij wziąć zrzut? q.Dump() zrobił trik w trybie instrukcji. Dzięki John. Po prostu słuchałem twojego podcastu DNR i robię sobie drogę w twojej książce programowania funkcjonalnego. Jesteś prawdziwą wartością dla społeczności programistów. –

Powiązane problemy