Designing in Linq in SQL and Linq for Objects

I am trying to get columns dynamically. In NHibernate, I can do this:

var list = _session.CreateCriteria(typeof(Person))
                   .SetProjection(Projections.ProjectionList()
                   .Add(Projections.Property("FirstName"))
                   .Add(Projections.Property("LastName"))
                   .Add(Projections.Property("Jersey"))
                   .Add(Projections.Property("FortyYard"))
                   .Add(Projections.Property("BenchReps"))
                   .Add(Projections.Property("VertJump"))
                   .Add(Projections.Property("ProShuttle"))
                   .Add(Projections.Property("LongJump"))
                   .Add(Projections.Property("PersonSchoolCollection"))
                    )
                   .SetResultTransformer(new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Person)))
                   .List<Person>();

What is the equivalent in Linq?

+2
source share
3 answers

As you also note and I assume that you are looking for an equivalent in the Linq-to-Sql or Entity Framework. Two answers (so far) would be such equivalents if _session.Query<Person>()replaced by context.Persons. (Although Darius may answer with an exception saying that you cannot create instances of an entity in an entity query).

, Select , AutoMapper . Automapper - (: project) . , , .. SQL-. , ( NHibernate).

AutoMapper ( ). , , Automapper.

, :

var dtoList = context.Persons.Project().To<PersonDto>();

( Person PersonDto Automapper).

SQL- , PersonDto.

+3
var list = from person in context.Persons
           select new Person()
           {
               FirstName = person.FirstName,
               LastName = person.LastName,
               Jersey = person.Jersey,
               FortyYard = person.FortyYard,
               BenchReps = person.BenchReps, 
               VertJump = person.VertJump,
               ProShuttle = person.ProShuttle,
               LongJump = person.LongJump,
               PersonSchoolCollection = person.PersonSchoolCollection
           };
+1

Doesn't this work:

 _session.Query<Person>()
         .Select(new {FirstName, LastName, Jersey, FortyYard})
         .ToList()
         .Select(x => new Person() { 
                       FirstName = x.FirstName,
                       LastName = x.LastName, 
                       Jersey = x.Jersey, 
                       FortyYard = x.FortyYard
                 }
          );
+1
source

All Articles