Domanda

Sto davvero scavando in LINQ e sto cercando di sbrigare questo business di espressione lambda. Non vedo il vantaggio di alcune sfumature della sintassi. In primo luogo, mi sembra che un'espressione lambda sia principalmente solo un modo diverso di usare una clausola Where. Perché allora non dovrei usare solo una clausola Where? L'espressione lambda è più efficiente?

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

È stato utile?

Soluzione

Dai un'occhiata a questo articolo: Sintassi delle query LINQ contro la sintassi del metodo :

  

In generale, si consiglia la sintassi della query   perché di solito è più semplice e di più   leggibile; tuttavia non c'è semantico   differenza tra la sintassi del metodo e   sintassi della query. Inoltre, alcuni   query, come quelle che recuperano   il numero di elementi che corrispondono a   condizione specificata o che recupera   l'elemento che ha il valore massimo   in una sequenza sorgente, può essere solo   espresso come chiamate di metodo. Il   documentazione di riferimento per il   operatori di query standard in   Lo spazio dei nomi System.Linq generalmente utilizza   sintassi del metodo. Pertanto, anche quando   iniziare a scrivere query LINQ,   è utile conoscere come   utilizzare la sintassi del metodo nelle query e in   stesse espressioni di query.

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

Altri suggerimenti

Leggi questo . Le query LINQ verranno trasformate in espressioni Lambda dal compilatore in fase di esecuzione.

Internamente, il compilatore tradurrà la sintassi della query nella sintassi lambda più esplicita. Non vi è alcun guadagno inerente alle prestazioni per entrambi gli stili e il codice generato per la maggior parte degli scenari è quasi identico a ciò che le persone scrivono a mano.

La differenza principale è che con la sintassi lambda è possibile eseguire il concatenamento in qualsiasi metodo di estensione operando, restituendo e IEnumerable<T>. Con la sintassi della query, sei limitato ai particolari metodi di estensione esplicitamente supportati dalla lingua (varia da una lingua all'altra)

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top