2016-02-21 3 views
0

Я изо всех сил пытался выяснить, как найти элемент в списке, проверив свойство, а затем выделив и называя этот элемент. Мне нужно сделать это, чтобы установить значение, соответствующее этой конкретной строке. Это не сработает, если я просто обнаружил, что есть один или несколько элементов в списке, которые соответствуют свойству. Мой код массивный, но вот его фрагмент:Найти пункт в списке по свойству и узнать имя элемента

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 
} 

Можно ли это сделать? Я знаю, что могу это сделать, проверяя, соответствует ли каждая строка этому свойству индивидуально, но есть ли более быстрый способ сделать это?

ответ

0

много способов это может быть достигнуто, я предпочитаю простой подход, сбор цикла с использованием индекса и изменить соответствующие полю

for(int index=0; index< diag_right.Count(); index++) 
{ 
    if(diag_right[index] == "b3") 
    { 
     // update    
     diag_right[index] = "b8";    
    } 
} 

LinQ подход

Этот подход я использовал Linq для извлечения всех индексов для строка соответствия.

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. 
} 

Работа Demo

Смежные вопросы