I would like to select only few columns from a certain (Blobs) table. I have fields like: Id, RowVersion, Size, Signature, Blob, and I want to select only first four. I do it li
If BlobDetails
isn't the LINQ entity, then you can do it directly:
var qry = from b in dc.Blobs
orderby b.RowVersion descending
select new BlobDetails {
Id = b.Id, Size = b.Size,
Signature = b.Signature, RowVersion = b.RowVersion};
return qry.ToList();
However; if BlobDetails
is a LINQ entity, you need to use subtrefuge:
var qry = from b in dc.Blobs
orderby b.RowVersion descending
select new {b.Id, b.Size, b.Signature, b.RowVersion};
var typedQry = from b in qry.AsEnumerable()
select new BlobDetails {
Id = b.Id, Size = b.Size,
Signature = b.Signature, RowVersion = b.RowVersion};
return typedQry.ToList();
The AsEnumerable
breaks the LINQ composition, making it work.
With "select new {" you are creating an anonymous type which cannot be implicitly cast to BlobDetails. Instead, explicitly declare the type you are newing within the select:
var allBlobs = from b in dc.Blobs
orderby b.RowVersion descending
select new BlobDetails {Id = b.Id, .... };
allBlobs.ToList();