Un progetto appena passato da LINQ to SQL per LINQ to entità, e ora ottengo l'erroreIl nodo di espressione LINQ di tipo "ArrayIndex" non è supportato in LINQ alle entità. ma è supportato da LINQ to SQL
The LINQ expression node type 'ArrayIndex' is not supported in LINQ to Entities.
per questa linea:
var a = db.Table.Single(d => d.Date == dates[0]);
(fissaggio in questo caso particolare è facile, come in
var firstDate = dates[0];
var a = db.Table.Single(d => d.Date == firstDate);
)
Ma perché funziona in linq-to-sql ma non in linq-to-entity? Hanno fatto linq-to-entity peggio di linq-to-sql? Cosa mi manca?
LINQ to SQL e LINQ to Le entità sono sviluppate completamente separatamente, qui non esiste un codice condiviso pertinente. Richiede supporto aggiuntivo in LINQ to SQL per qualcosa che a prima vista non ha senso (sembra che tu stia cercando di passare 'dates' come parametro dell'array, e che il server legga il primo elemento), quindi io ' Immagino che non sia molto usato e per questo motivo non è mai stato considerato per LINQ alle Entità. Dato che questa è una supposizione, mi asterrò dal postarla come risposta. – hvd
Sembra un bug per me. Prima di tradurre in SQL, l'albero delle espressioni deve essere risolto con espressioni più semplici. Questo è essenzialmente ciò che @dontomaso sta facendo valutando le date [0], ma non dovrebbe farlo manualmente (specialmente per un'espressione così semplice). – Ackroydd