基于对象变量搜索对象列表

Ben*_*Ben 12 c# search list

我有一个对象列表.这些对象有三个变量,ID,Name和value.此列表中可能有很多对象,我需要根据ID或名称找到一个对象,然后更改该值.例

class objec
{
    public string Name;
    public int UID;
    public string value;
}
List<objec> TextPool = new List<objec>();
Run Code Online (Sandbox Code Playgroud)

如何在TextPool中找到名称为"test"的一个条目,并将其值更改为"Value".真正的程序有更多的搜索选项和需要更改的值,所以我不能只使用一个字典(虽然名称和UID或唯一标识符).任何帮助都会很棒

Ree*_*sey 32

您可以使用LINQ找到它,然后直接更改元素:

var item = TextPool.FirstOrDefault(o => o.Name == "test");
if (item != null)
       item.value = "Value";
Run Code Online (Sandbox Code Playgroud)

如果您想要更改匹配的所有元素,您甚至可以做到:

TextPool.Where(o => o.Name == "test").ToList().ForEach(o => o.value = "Value");
Run Code Online (Sandbox Code Playgroud)

但是,我个人宁愿把它分开,因为我觉得第二个选项不太可维护(做直接导致副作用的操作对我来说"气味")......

  • 调用.ToList()只是为了使用ForEach扩展对我来说更多. (2认同)