Return selected specified columns

后端 未结 2 1345
半阙折子戏
半阙折子戏 2021-02-20 11:16

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

相关标签:
2条回答
  • 2021-02-20 11:58

    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.

    0 讨论(0)
  • 2021-02-20 12:20

    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();
    
    0 讨论(0)
提交回复
热议问题