2013-09-07 3 views
2

У меня есть 2D массив так:Как искать в 2D-массиве по LINQ?

string[,] arr= 
{ 
    {"1","ali"}, 
    {"2","mehdi"}, 
    {"3","john"}, 
    {"4","milad"}, 
}; 

я искать имя в колонки для заявления, как это:

string name=""; 
for (int i = 0; i < arr.GetUpperBound(0); i++) 
{ 
    if (arr[i, 1].StartsWith("m")) 
    { 
     name = arr[i, 1]; 
     break; 
    } 
} 
Response.Write(name); 

я хочу использовать LINQ вместо за заявление, чтобы получить первый имя, начинающееся с 'm'.
как преобразовать выше за заявление на номер LINQ.

ответ

4
var name = arr.Cast<string>() 
       .Where((x, i) => i % 2 == 1 && x.StartsWith("m")) 
       .First(); 

i % 2 == 1 будет принимать только элементы из второго столбца и x.StartWith("m") будет принимать только имена, которые начинаются с 'm'.

Иными методами LINQ вы должны использовать Cast<string>(), поскольку многомерные массивы не реализуют общий IEnumerable<T>.

+0

@SamieyMehdi - Вы пробовали использовать это? вы не изменили тип массива, поэтому не видите, почему он изменит ответ – Sayse

+0

Так что измените 'i% 2 == 1' на' i% 3 == 1' ... – MarcinJuraszek

+0

@SamieyMehdi Извините, но мы не играйте в кошки-мышки. Это третья версия вопроса. Я уже ответил на два предыдущих, и все готово. Вы должны задать * правильный вопрос в начале или создать еще один после первого ответа. – MarcinJuraszek

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