C# 4.0
Nella seguente query LINQ l’ordinamento si basa sul campo db di tipo “stringa” quindi un ordinamento errato perché 1.0.0.11 come stringa precede 1.0.0.9:
var query = from c in dc.Customer
join cp in dc.CustomerPackage
on c.Id equals cp.IdCustomer
join p in dc.Package
on cp.IdPackage equals p.Id
where c.Code == customerCode
&& c.ChainCode == chainCode
&& c.StoreCode == storeCode
&& cp.DownloadDate == null
orderby p.Version
select p;
Così generava l’eccezione “Sono supportati solo costruttori e inizializzatori senza parametri”:
var query = from c in dc.Customer
join cp in dc.CustomerPackage
on c.Id equals cp.IdCustomer
join p in dc.Package
on cp.IdPackage equals p.Id
where c.Code == customerCode
&& c.ChainCode == chainCode
&& c.StoreCode == storeCode
&& cp.DownloadDate == null
orderby new Version(p.Version)
select p;
Così generava sempre l’eccezione
var query = (from c in dc.Customer
join cp in dc.CustomerPackage
on c.Id equals cp.IdCustomer
join p in dc.Package
on cp.IdPackage equals p.Id
where c.Code == customerCode
&& c.ChainCode == chainCode
&& c.StoreCode == storeCode
&& cp.DownloadDate == null
select p).OrderBy(p => new Version(p.Version));
Così invece funziona perché passando per il metodo ToList() credo che l’OrderBy lo faccia attraverso la collezione di oggetti e non più attraverso la query entity
var query =
(from c in dc.Customer
join cp in dc.CustomerPackage
on c.Id equals cp.IdCustomer
join p in dc.Package
on cp.IdPackage equals p.Id
where c.Code == customerCode
&& c.ChainCode == chainCode
&& c.StoreCode == storeCode
&& cp.DownloadDate == null
select p).ToList().OrderBy(p => new Version(p.Version));
Yeah! :D
RispondiEliminaCome posso contattarti?
RispondiEliminaAnche se un po' in ritardo ... al seguente sito www.diegoparolin.com
RispondiElimina