c# - 从列表 C# LINQ 中的字符串替换一个单词
问题描述
我有一个列表,我在其中获取 URL,例如:
我想像任何 URL 一样用实际 URL 替换“URL//”。为什么我要这样做,因为 URL 将取决于正在访问的环境网站。就像舞台一样,它将使用舞台的网址等。
我努力了:
ProductReviews.Items.ToList().ForEach(x => x.AvatarUrl.Replace("URL", serverImageUrl));
但据我了解,它需要完整的字符串值作为“URL”。请帮我
解决方案
您不使用 LINQ 对数据收集进行修改。如果要修改集合,请使用普通的 foreach 循环
foreach(var pr in ProductReviews)
pr.AvatarUrl = pr.AvatarUrl.Replace("URL", serverImageUrl);
请记住:“LINQ 用于查询,而不是修改”
如果您想使用 LINQ 替换 URL,您可以将其作为查询的一部分,该查询返回代表您的替换的新对象的枚举:
ProductReviews.Select(pr => new { Review = pr, ReplacedUrl = pr.AvatarUrl.Replace("URL", serverImageUrl) } );
这将为您提供可枚举的具有原始和替换 url 的新对象。假设您需要所有字段作为单个字段,则包含原始字段更容易,但您也可以列出您想要的内容:
ProductReviews.Select(pr => new {
pr.Id,
pr.CustomerId,
AvatarUrl = pr.AvatarUrl.Replace("URL", serverImageUrl)
} );
或者您可以使用自动映射器将您的数据库对象映射到您的客户端对象并节省一些这种费力的输入
推荐阅读
- android - 从其他适配器更新 recyclerview 适配器
- typescript - 我收到错误,polyfills-es2015.js:4001 未处理的承诺拒绝:指定音频 id 的引用不存在。; 区:
; 任务 - php - Laravel 解决 Storage::append() 中“允许的内存大小为 134217728 字节已耗尽”错误的解决方案
- c - 如果使用这个程序,为什么第一个字母不进入数组?
- .net - PowerShell 工作流在通过任务计划程序中的计划作业运行时自行挂起
- javascript - 自定义视频插件在 IE 浏览器中不起作用
- python - 使用此代码时得到一个空列表,您能解释一下原因吗?
- reactjs - 如何为此组件设置添加购物车操作?
- c# - 检测一个点是否没有被其他点包围
- typescript - Typescript inlines .d.ts 编译后导入