Могу ли я создать новый объект с результатами запроса? - PullRequest
0 голосов
/ 17 мая 2011

Если есть лучший способ сделать это, дайте мне знать, но именно так я и предполагал.Можно ли это сделать?

Клиент - это таблица в базе данных / datacontext.То, что я хочу, это запросить эту таблицу и построить новый объект с ней.

Если бы я вставил запись, я бы сделал что-то вроде этого:

Customer cust = new Customer(){ FirstName = "A", LastName = "B", Age = 31 }
db.Customers.InsertOnSubmit(cust);
db.SubmitChanges();

Что я хочу сделать - создать экземпляр этого объекта с результатом запроса.Примерно так:

var query =
     from a in db.Customers
     where a.FirstName == "A"
     select a;

Customer cust = new Customer(){ query };

или, может быть, даже

Customer cust = new Customer(){
     from a in db.Customers
     where a.FistName == "A"
     select a;
}

есть ли способ сделать это?

Ответы [ 3 ]

6 голосов
/ 17 мая 2011

Да, вот так:

var query =  from c in db.Customers
     where c.FirstName == "somecriteria"
     select new Customer()
     {
        FirstName = "somevalue",
     };

Вы также можете создавать совершенно анонимные объекты ...

var query =  from c in db.Customers
     where c.FirstName == "somecriteria"
     select new() 
     {
        FirstName = c.SomeProperty,
        AnotherProperty=c.AnotherProperty,
     };
0 голосов
/ 17 мая 2011

Не существует встроенного способа клонирования объектов нужным вам способом

db.Customers
    .Where(x => x.FirstName ="A")
    .Select(x => new Customer
        {
           FirstName = x.FirstName,
           LastName = x.LastName,
           ...
           Id = default(x.Id.GetType()) // or copy the Id if you want it
        })
    .First();

Помимо этого метода вы можете добавить новый конструктор Customer, который принимает Customer в качестве параметра для этого, или добавить помощникадля клонирования.

Наконец, вы можете рассмотреть возможность использования AutoMapper для этого.

0 голосов
/ 17 мая 2011
db.Customers
    .Where(x => x.FirstName == "A")
    .Select(x => new Customer{ FirstName =x.FirstName , LastName = x.LastName, Age = x.Age})
    .FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...