This LINQ Model Query seems extremely inefficient
As this is EF code, assuming you have all the associations set up correctly, you should be able to write it something like this:

public IEnumerable&lt;Collection&gt; GetCollectionByUid(long uid) {
    var result =
       (from collection in db.UserCollections
        where collection.uid == uid
        orderby collection.CreateDate descending
        select new Collection {
            Name = collection.CollectionName,
            Type = collection.CollectionType.CollectionTypeName,
            Created = collection.CreateDate,
            Count = collection.Figures.Count(),
        }).ToList();
    return result;
}


My only real criticism is the variable names.

Local variables or parameters should not be prefixed with an underscore.  IMHO, it should only be allowed for private instance fields.  So rather than using _collection, it would be better off as collection (though I used result for the name here instead).

Parameter names are very much part of the documentation as well (especially so in C# and .NET in general).  The method is called GetCollectionByUid which suggests you provide a uid.  The parameter name should reflect that.  Call it uid since that's what it is.

Personal preference but I also prefer to write out the full/reasonable-length variable names in queries.  I reserve significantly shortened variable names (i.e., one character variable names) in lambda expressions.