2016-12-23 3 views
0
public List<Customer> getCustomer() 
{ 
    using (IDbConnection con=DapperConnection()) 
    { 
     string sql = "Select * from Customer"; 
     return con.Query<Customer>(sql).Select(x => new { x.Id, x.LastName }) 
        .ToList(); 
    } 
} 

class Customer 
{ 
    public string Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set;} 
} 

Кто-нибудь знает, как вернуть определенные столбцы, используя dapper? То, что я пытаюсь достичь, - это вернуть только Id и LastName как List, чтобы я мог привязать их к моим элементам управления.Dapper: Как вернуть выбранные столбцы?

ответ

0

Неуверенных именно то, что вы имеете в виду, но, конечно, вы должны вернуть объект клиента вместо анонимного типа, или, по крайней мере, сделать уменьшенную версию объекта клиента, который будет использоваться управлением

public List<Customer> getCustomers() 
    { 
     using (IDbConnection con = DapperConnection()) 
     { 
      string sql = "Select * from Customer"; 
      return con.Query<Customer>(sql).ToList(); 
     } 
    } 

Или, если вы не нравится накладные расходы, связанные с возвратом полного объекта клиента

public List<CustomerBase> getCustomers() 
    { 
     using (IDbConnection con = DapperConnection()) 
     { 
      string sql = "Select * from Customer"; 
      return con.Query<CustomerBase>(sql).ToList(); 
     } 
    } 

    public class CustomerBase 
    { 
     public string Id { get; set; } 
     public string LastName { get; set; } 
    } 

    public class Customer: CustomerBase 
    { 
     public string FirstName { get; set; } 
     //Other props... 
    } 
+0

Если я верну его как на объект, он пойдет просто отлично, но потерял удобочитаемость. Я использую C# WinForms, и иногда я в конечном итоге привязываю строки к comboboxes, как i bind First и LastName для разделения combobox. Итак, если я собираюсь подклассировать моего клиента, я думаю, что это краска, с которой нужно иметь дело. –

+0

В этом случае я предполагаю, что вы используете имя и фамилию в качестве своего автозаполнения в своих элементах управления? Если это так, я не думаю, что вы должны иметь дело с этим в слое данных, а из слоя данных возвращать полный набор деталей клиента и разделить его в коде позади вашей winform. Имеет смысл? – JFM

+0

Да, я закончил так. Спасибо, сэр –

Смежные вопросы