【问题标题】:How to manipulate PetaPoco result set after fetch is complete?fetch 完成后如何操作 PetaPoco 结果集?
【发布时间】:2020-11-15 16:19:45
【问题描述】:

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

[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属性?

【问题讨论】:

  • return result.Select(x => { x.Details = x.Details.Substring(0, 30); retrun x});

标签: c# list ienumerable petapoco


【解决方案1】:

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

return result.Select(x => 
{ 
    x.Details = x.Details.Substring(0, 30);
    return x;
});

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2016-05-12
    相关资源
    最近更新 更多