2015-12-18 1 views
-1

Здравствуйте, у меня есть перечислимое как это (когда я отлаживаю программу, это IEnumerable. Я не знаю IEnumberable достаточно). :Выбор и удаление некоторых указанных элементов из IEnumerable <String[]>

 var result = from p in displayedParticipants 
        select new[] { 
        p.Country, 
        p.City, 
        p.SurveyStartDate.ToString("dd.MM.yyyy HH:mm"), 
        p.SurveyFinishDate.ToString("dd.MM.yyyy HH:mm"), 
        p.Device.ToString(), 
        p.IP.ToString(), 
        p.Longitude.ToString(), 
        p.Latitude.ToString(),             
      }; 

И у меня есть массив индекса, который указывает на то, что поле выбрано из этого результата, то есть объект результата список массив строк и каждый массив строк содержит эти поля.

string[] toShow = {0,1}. 

Это означает, что я хочу только, чтобы получить 1-го и 3-го поля (которые страна и город) и удалить все остальные fields.But IEnumerable не дает мне какой-либо операции удалить. Как я могу решить эту проблему. Спасибо за любую помощь.

+0

Возможный дубликат [Как получить доступ к индексу в объекте IEnumerator в C#] (http://stackoverflow.com/questions/1654209/how-to-access-index-in- ienumerator-object-in-c) –

+0

Проблема не в доступе к элементу. Я могу получить к нему доступ через result.ElementAt (i), но я не могу изменить этот элемент. –

+0

Интерфейс IEnumerable не предлагает никаких возможностей для изменения его элементов, поэтому вам нужно использовать класс, который позволяет использовать его как Список Gusman

ответ

0

IEnumerable - это не что-то вроде списка или массива, который содержит что-то, что вы можете изменить. IEnumerable - это то, что может перечислять объекты.

Но вы можете создать список (или массив), который соответствует вашим требованиям из этого IEnumerable:

string[][] yourResults = 
    result.Select(inner => new[]{inner[0], inner[1]}).ToArray(); 
0

IEnumerable или IEnumerable<T> являются интерфейсы, которые позволяют перечислить последовательность, поэтому они не являются списки, где вы могут добавлять или удалять элементы. Можно использовать другой запрос:

List<string[]> list = result 
    .Select(arr => toShow.Select(i => arr[i]).ToArray()) 
    .ToList(); 

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

  • Нет связанных вопросов^_^