【发布时间】: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