powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / удалить элемент массива
12 сообщений из 12, страница 1 из 1
удалить элемент массива
    #40074449
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет, оч прошу помогите с удалением элемента массива
мне нужно удалить элементы которые равны "", я постарался написать
Код: vbnet
1.
2.
3.
4.
5.
For i As Integer = 0 To m_Array.Length - 1
       if m_Array(i) ="" Then
                  System.Array.Clear(m_Array, i, 1)
       end if
     Next


но блин не удается никак, выводит хрень какую-то
вот в эту функцию нужно добавить такой код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Public Shared Function RemoveDuplicates(m_Array As Object()) As String()

    System.Array.Sort(m_Array)

    For i As Integer = 0 To m_Array.Length - 1
       if m_Array(i) ="" Then
                  System.Array.Clear(m_Array, i, 1)
       end if
     Next

    Dim k As Integer = 0
    For i As Integer = 0 To m_Array.Length - 1
        If i > 0 AndAlso m_Array(i).Equals(m_Array(i - 1)) Then
            Continue For
        End If
        m_Array(k) = m_Array(i)
        k += 1
    Next

    Dim unique As [String]() = New [String](k - 1) {}

    System.Array.Copy(m_Array, 0, unique, 0, k)

    Return unique

End Function



Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074456
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist
Код: vbnet
1.
System.Array.Clear(m_Array, i, 1)

1) А с чего вы вообще решили, что этот метод удаляет элемент массива?
Код: c#
1.
2.
3.
4.
5.
    //
    // Summary:
    //     Sets a range of elements in an array to the default value of each element type.

    public static void Clear(Array array, int index, int length);



2) А чем не нравятся какие-то простые решения типа .Distinct() из Linq?
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074460
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо за ответ, мне бы понравилось, да знаний не хватает. Мне нужно для SSRS из набора данных получить уникальные значения по условию
реализация общая такая:
Код: vbnet
1.
2.
3.
4.
5.
6.
=Join(Code.RemoveDuplicates
	(LookupSet
		(1, 1, IIF(Fields!Транзакция_УслугаВидАнг.Value = "Transfer",Fields!ФинДок_СводнаяНакладнаяНомер.Value,""),"Report"
                )
         ),","
     )


и тут я натолкнулся на необходимость получения distinct значений, нашел в инете пример (тот который вы ставите под сомнение)
из-за условия у меня появляется пустой элемент который я хотел удалить

возможно я вообще что-то делаю неправильно, если так подскажите пожалуйста как правильно
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074463
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем случае
Код: c#
1.
MyNewArray = MyArray.Distinct().ToArray()


а дальше нюансы, связанные со сравнением элементов. Тут не очень понятно, почему на входе массив объектов? Что реально лежит в массиве, какого типа элементы?
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074464
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

поля из query видимо
подскажите пожалуйста как удалить элемент из массива, что мне нужно написать чтобы я удалить все элементы которые равны ""?
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074465
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз.
Какая задача стоит?
Удалить элемент из массива (нельзя просто взять и удалить элемент из массива, массив так устроен) или нужно получить массив уникальных значений (для этого не требуется удалять элементы из массива)
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074466
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

у меня в массиве есть элементы которые имеют значение "A", я хочу удалить все элементы массива которые равны "A"
я правильно понимаю, что у System.Array нет готового решения и я должен перебрать все элементы которые не равно "A" в новый массив и затем уже работать с ним?
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074467
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist
у меня в массиве есть элементы которые имеют значение "A", я хочу удалить все элементы массива которые равны "A"

Код: c#
1.
MyNewArray = MyArray.Where(n => n != "A").ToArray()


(это синтаксис на C#)
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074468
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist
System.Array нет готового решения и я должен перебрать все элементы
Для того чтобы работать с данными в .NET есть сотни различных примочек, начиная от обёртки List над массивом и заканчивая мощнейшей библиотекой Linq. Напрямую с массивами в .NET работают достаточно редко, и уж конечно никто не перебирает их вручную.
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074470
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
(это синтаксис на C#)
на VB.NET это будет так
Код: vbnet
1.
MyNewArray = MyArray.Where(Function(n) n <> "A").ToArray()

если верить конвертеру
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074472
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
а как сделать на VB?
...
Рейтинг: 0 / 0
удалить элемент массива
    #40074475
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. выше.
И еще, если по факту массив состоит из строк, но объявлен как массив объектов, нужно предварительно сделать Cast
Код: vbnet
1.
MyNewArray = MyArray.Cast(Of String)().Where(Function(n) n <> "A").ToArray()
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / удалить элемент массива
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]