2009-06-28 19 views
6

Sto scavando davvero in LINQ e sto cercando di eliminare questa attività di espressione lambda. Non vedo il beneficio di alcune delle sfumature della sintassi. In primo luogo, mi sembra che un'espressione lambda sia per lo più solo un modo diverso di usare una clausola Where. Perché non dovrei usare solo una clausola Where allora? L'espressione lambda è più efficiente?Quando utilizzare espressioni lambda anziché una clausola Where in LINQ

È solo un'altra aggiunta sintattica per attirare i programmatori di un altro gruppo per sentirsi più a proprio agio in C#? Ci sono altri casi d'uso migliori per espressioni lambda a cui non ho ancora esposto?

+0

Leggere prima di fare domande del genere. :) http://books.google.lv/books?id=12HliU9_D_kC&dq=pro+linq&printsec=frontcover&source=bn&hl=lv&ei=YXZHSumhH4nz_AbAtY2GCQ&sa=X&oi=book_result&ct=result&resnum=6 –

risposta

9

Date un'occhiata a questo articolo: LINQ Query Syntax versus Method Syntax :

In generale, si consiglia di sintassi di query perché di solito è più semplice e più leggibile; tuttavia non esiste una differenza semantica tra la sintassi del metodo e la sintassi della query . Inoltre, alcuni query, come quelle che recuperano il numero di elementi che corrispondono a una condizione specificato, oppure che recuperano l'elemento che ha il valore massimo in una sequenza sorgente, possono essere solo espresso come chiamate di metodo. La documentazione di riferimento per gli operatori di query standard nello spazio dei nomi System.Linq utilizza generalmente la sintassi del metodo . Pertanto, anche quando inizia a scrivere query LINQ, , è utile conoscere come utilizzare la sintassi del metodo nelle query e nelle espressioni di query .

E anche questa domanda: LINQ: Dot Notation vs Query Expression

+0

Accidenti mi hai battuto con il link! :) –

1

this Leggi. Le query LINQ verranno convertite in espressioni Lambda dal compilatore in fase di esecuzione.

1

Internamente, il compilatore tradurrà la sintassi della query nella sintassi lambda più esplicita. Non c'è alcun guadagno di guadagno inerente per entrambi gli stili e il codice generato per la maggior parte degli scenari è quasi identico a quello che le persone digitano a mano.

La differenza principale è che con la sintassi lambda è possibile concatenare qualsiasi metodo di estensione che opera e restituisce e IEnumerable<T>. Con la sintassi della query, ci si limita ai metodi di estensione particolare esplicitamente supportati dalla lingua (varia a seconda della lingua)

L'uso effettivo o meno della sintassi della query è davvero una questione di preferenze personali.

0
+0

Per favore, puoi elaborare? – menjaraz

+0

Ecco un esempio di come è possibile unire la sequenza insieme utilizzando Lambda e le espressioni di query: –

+1

[Le risposte costituite da un solo collegamento non sono considerate utili] (http://meta.stackexchange.com/questions/8231/are-answers-that link-altrove-davvero-buoni-risposte -Just-contenere-). Potresti voler modificare la tua risposta per includere le parti pertinenti del materiale collegato, in modo che sia * qui *, sullo stesso sito della domanda. – AakashM

Problemi correlati