在linqQuery中只返回字符串的一部分
本文关键字:字符串 一部分 返回 linqQuery | 更新日期: 2023-09-27 18:19:13
我有这个linqQuery返回一个博客文章列表
var blogPosts = _repo.GetPosts().OrderByDescending(o => o.PostedOn).Take(25).ToList();
在我的类中,我有一个名为Description的字符串属性,它包含一个很长的文本。我的问题是,我怎么能在linqQuery包括一些代码,说它应该只返回前20个字母从我的public string Description { get; set; }
应该这样做:
var blogPosts = _repo
.GetPosts()
.OrderByDescending(o => o.PostedOn)
.Take(25)
.AsEnumerable()
.Select(x => new BlogPost
{
Description = x.Description.Substring(0, 20)),
// set other properties
});
如果你只想要简短的描述,你可以做更多的LinQ:
var shortenedDescriptions = blogPosts.Select(post => post.Description)
.Select(s => s.Substring(0, Math.Min(s.Length, 20))).ToList();
如果你想优化它,你可以一次做两个选择。
如果你想用缩短的描述,你需要一个循环:
foreach(var post in blogPosts)
{
post.Description = post.Description.Substring(0, Math.Min(s.Length, 20))
}
var blogPosts = _repo.GetPosts()
.OrderByDescending(o => o.PostedOn)
.Take(25)
.ToList()
.Select(x=>new
{
x...., //other needed properties
Description = x.Description.Substring(0,20)
});