我创建了一些类来支持从多个表中获取数据:
[PetaPoco.TableName("Employees")]
class Employee {
public int Id { get; set; }
public FirstName { get; set; }
...
}
[PetaPoco.TableName("Tickets")]
class Ticket {
public int Id { get; set; }
public string Details { get; set; }
...
[PetaPoco.Ignore]
public Employee employee { get; set; }
}
现在在一个控制器中,我从数据库中获取数据并在响应正文中返回结果:
[HttpGet]
public IEnumerable<Ticket> Get() {
var db = new Database("DefaultConnectionString");
var result = db.Query<Ticket, Employee>("select * from tickets t left join employees e on t.employee_id = e.id");
return result;
}
所有这一切都很好。但问题是当Details列包含太多字符时。我想将响应中返回的字符数限制为:30。我不希望限制发生在数据库级别,而是result在响应中返回之前发生。
这是我想象的如何做到这一点,但编译器不允许这样做:
return result.Select(x => { x.Details = x.Details.Substring(0, 30); }); // doesn't work
return result.Select( (t, e) => { t.Details = t.Details.Substring(0, 30); }); // doesn't work
return result.Select(x => { x.Details = x.Details.Substring(0, 30); }, y=> {}); // doesn't work
如何Details在响应返回之前修改所有项目的属性?