0

我创建了一些类来支持从多个表中获取数据:

[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在响应返回之前修改所有项目的属性?

4

1 回答 1

0

您显示的 .Selects 没有返回正确的实例。这应该工作

return result.Select(x => 
{ 
    x.Details = x.Details.Substring(0, 30);
    return x;
});
于 2020-07-28T03:54:50.690 回答