C# 按属性查找列表中的项目并知道项目名称
通过检查属性,然后隔离并命名该项,我一直在努力找出如何在列表中查找项。我需要这样做来设置一个与特定字符串对应的值。如果我只是发现列表中有一个或多个项与属性匹配,那么它将不起作用。我的代码非常庞大,但这里有一个片段:C# 按属性查找列表中的项目并知道项目名称,c#,C#,通过检查属性,然后隔离并命名该项,我一直在努力找出如何在列表中查找项。我需要这样做来设置一个与特定字符串对应的值。如果我只是发现列表中有一个或多个项与属性匹配,那么它将不起作用。我的代码非常庞大,但这里有一个片段: List<string> diag_right = new List<string>(); diag_right.Add(b3); //Add the string b3 diag_right.Add(b5); //Add the string b5 diag
List<string> diag_right = new List<string>();
diag_right.Add(b3); //Add the string b3
diag_right.Add(b5); //Add the string b5
diag_right.Add(b7); //Add the string b7
if (diag_right.Exists(a => a.Equals("")))
{
//Find the item (string name, b3, b5, etc.) that was found as matching the blank property
}
List diag_right=new List();
右诊断。添加(b3)//添加字符串b3
右诊断。添加(b5)//添加字符串b5
右诊断。添加(b7)//添加字符串b7
if(diag_right.Exists(a=>a.Equals(“”))
{
/找到与空白属性匹配的项(字符串名称、b3、b5等)。
}
有可能这样做吗?我知道我可以通过检查每个字符串是否单独匹配此属性来实现这一点,但有没有更快的方法来实现这一点?很多方法都可以实现,我更喜欢简单的方法,使用索引循环集合并修改匹配字段
for(int index=0; index< diag_right.Count(); index++)
{
if(diag_right[index] == "b3")
{
// update
diag_right[index] = "b8";
}
}
工作
var indexes = diag_right.Where(e=>e.Equals("searchstring")).Select((c,i) => i).ToList();
foreach(int index in indexes) // loop through each line.
{
diag_right[index] = "newvalue"; // set new value.
}