在.NET中如何一次性批量设置列表中所有匹配搜索词的元素属性值
实现方案
你可以直接遍历列表匹配目标单词,修改对应属性即可,两种常用实现方式如下:
方式1:使用List自带的ForEach方法(写法更简洁)
string wordSearch = "test"; // 可以保留你原有的Exists判断,也可以省略直接执行修改逻辑 if (wordsIn.Exists(x => x.wordTxt == wordSearch)) { wordsIn.ForEach(item => { if (item.wordTxt == wordSearch) { item.wordIsFound = 1; } }); }
如果你不需要在无匹配项时执行其他逻辑,完全可以去掉外层的Exists判断,直接执行ForEach的修改逻辑即可,即使没有匹配项也不会产生副作用。
方式2:使用常规foreach循环(可读性更高)
string wordSearch = "test"; foreach (var item in wordsIn) { if (item.wordTxt == wordSearch) { item.wordIsFound = 1; } }
说明
因为cls_words是类属于引用类型,遍历过程中修改实例属性会直接作用于列表中存储的原实例,不需要额外操作回写列表。执行上述代码后你示例列表中wordTxt为test的两个条目,wordIsFound属性都会被设置为1,符合你的需求。
内容的提问来源于stack exchange,提问作者E.D.
相关产品推荐
相关产品推荐

