Linq e select in un singolo campo.

giovedì 27 novembre 2008 - 17.05

secks Profilo | Senior Member

Ciao a tutti, sto provando Linq su DataBase SQL con la seguente istruzione:

MyDataContext ctx = new MyDataContext();


Così funziona.
IQueryable<Employees> collx = from c in ctx.Employees where c.City == "London" select c;

Se volessi ritornare solo un campo

IQueryable<Employees> collx = from c in ctx.Employees where c.City == "London" select c.LastName;

sulla select da il seguente errore:
Impossibile convertire in modo implicito il tipo 'System.linq.IQueryable<AnonimusType#1> ... E' presente una conversione esplicita. Probabile cast mancante.

Qualcuno mi sa dire come fare?

Ho risolto impostando
var collx = from c in ctx.Employees where c.City == "London" select c;

Invece di
IQueryable<Employees> collx = from c in ctx.Employees where c.City == "London" select c;

Mi piacerebbe comunque avere o dove trovare un chiarimento sulla differenza delle 2 sintassi.

Ciao a tutti.
Paolo.





freeteo Profilo | Guru

Ciao,
per selezionare solo alcune proprietà devi usare il "new", in questo modo:
from u in UTENTIs select new { u.Nome,u.Password }
il fatto è che con linq quello che torna una query (sia essa su database, collection in memoria, xml etc..) è cmq un oggetto, quindi con quel "new" stai dicendo al compilatore di crearti un oggetto per te, con queste proprietà, che possono avere anche un nome diverso:
from u in UTENTIs select new { NomeUtente = u.Nome, Pwd = u.Password }

quello che viene creato però non lo sai ancora, quindi non lo puoi definire con un tipo "ben definito" ancora, ed ecco l'utilità della parola chiave "var" per dire proprio qualcosa che di "variante", ossia determinabile tramite "inferenza", e disponibile nella riga successiva

ti consiglio qualche link:
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
http://blogs.dotnethell.it/freeteo/LinqPad-editor-di-query-Linq-stand-alone__12730.aspx
oltre ai soliti di msdn...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5