Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Списки List<> / 22 сообщений из 22, страница 1 из 1
21.05.2013, 23:11
    #38267357
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
Скажите пожалуйста, как реализовать список с неизвестным количеством столбцов?

есть
авторList<string> dinosaurs = new List<string>();
а надо
авторList<string,int,int,int,int,int........> dinosaurs = new List<string,int,int,int,int,int........>();

заранее количество int не известно...

куда копать?

Заранее благодарен.
...
Рейтинг: 0 / 0
21.05.2013, 23:28
    #38267372
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
vah,

столбцы у списка это 5)
...
Рейтинг: 0 / 0
21.05.2013, 23:32
    #38267375
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
Lelouch,

Копай в массивы
...
Рейтинг: 0 / 0
21.05.2013, 23:33
    #38267378
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
PallarisLelouch,

Копай в массивы

Ой :)
...
Рейтинг: 0 / 0
21.05.2013, 23:44
    #38267387
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
DataTable сгодится?
...
Рейтинг: 0 / 0
21.05.2013, 23:53
    #38267394
skole
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
[quot vah]Скажите пожалуйста, как реализовать список с неизвестным количеством столбцов?[quot]
Обычно такие проблемы возникают при неправильном проектировании приложения, пересмотрите архитектуру, может там уже пора какой-нибудь шаблон проектирования применить.
...
Рейтинг: 0 / 0
22.05.2013, 00:18
    #38267412
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
Lelouchvah,

столбцы у списка это 5)

не, ну список ведь претендует на звание массива... почему бы ему не стать многомерным?
...
Рейтинг: 0 / 0
22.05.2013, 00:28
    #38267421
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
vah,

http://ru.wikipedia.org/wiki/Список_(информатика)

На что там список "претендует" ?
...
Рейтинг: 0 / 0
22.05.2013, 00:39
    #38267429
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
Или
ИзопропилDataTable сгодится?
Или, например,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Dinosaur
{
    public string StringProperty { get; set; }

    public List<int> ListOfIntProperty { get; private set; }

    public Dinosaur()
    {
        this.ListOfIntProperty = new List<int>();
    }
}
...
Рейтинг: 0 / 0
22.05.2013, 01:30
    #38267467
skole
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
vah, что делать с объектом будешь? Он как элемент программы ни на что не годиться…
...
Рейтинг: 0 / 0
22.05.2013, 08:41
    #38267608
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
skolevah, что делать с объектом будешь? Он как элемент программы ни на что не годиться…

просто массив надо выкинуть в excel, подумал - может со списком будет покрасивше...
...
Рейтинг: 0 / 0
22.05.2013, 10:32
    #38267790
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
vah,
Tuple
...
Рейтинг: 0 / 0
22.05.2013, 10:45
    #38267828
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
ЕвгенийВvah,
Tuple
как это поможет выгрузке в эксель?
...
Рейтинг: 0 / 0
22.05.2013, 11:03
    #38267873
skole
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
vahпросто массив надо выкинуть в excel, подумал - может со списком будет покрасивше...Тогда следует создать класс и заполнить его нужными данными:
Lelouch
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class Dinosaur
{
    public string StringProperty { get; set; }

    public List<int> ListOfIntProperty { get; private set; }

    public Dinosaur()
    {
        this.ListOfIntProperty = new List<int>();
    }
}
...
Рейтинг: 0 / 0
22.05.2013, 11:07
    #38267887
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
А реально на практике, где можно применить списки, например в клиентской форме..?
...
Рейтинг: 0 / 0
22.05.2013, 11:16
    #38267914
The Dwarf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
См. tuple

А ещё лучше сделать класс Динозавр с членами int и сделать уже список динозавров.
...
Рейтинг: 0 / 0
22.05.2013, 11:24
    #38267929
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
ИзопропилЕвгенийВvah,
Tuple
как это поможет выгрузке в эксель?
ТС хочет список кортежей, что и есть List<Tuple<.... - это структура данных для задачи, а как ее преобразет во что то иное, вопрос второй.
...
Рейтинг: 0 / 0
22.05.2013, 11:26
    #38267935
valex13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
Гораздо удобнее таблицу (DataTable или DataGridView) экспортировать в Эксель, т.к. сам Эксель и есть таблица :-)
Ну например так:
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
  ''' <summary>
    ''' Выгрузить данные в Эксель
    ''' </summary>
    ''' <param name="objGrid"></param>
    ''' <remarks></remarks>
    Public Shared Sub ExportToExcel(ByVal objGrid As DataGridView)
        If objGrid Is Nothing Then Return
        Dim oApp                 ' Объект MS EXCEL.APPLICATION
        Dim oWorkbook            ' Объект MS EXCEL.WORKBOOK
        Dim oSheet               ' Объект MS EXCEL.SHEET

        Dim frmWait As frmWaiting = New frmWaiting()
        frmWait.Show()

        Try
            frmWait.Message = "Открываем MS Excel"

            oApp = GetObject("", "Excel.Application")
            oWorkbook = oApp.WorkBooks.Add()
            oSheet = oApp.Sheets(1).Select()

            frmWait.Message = "Формируем заголовок"

            ' Формируем заголовок
            Dim nCount As Integer = 1
            For Each Item As DataGridViewColumn In objGrid.Columns
                If Item.Visible Then
                    oApp.Cells(1, nCount).Value = Item.HeaderText.ToString
                    oApp.Cells(1, nCount).Font.Bold = True

                    oApp.Cells(1, nCount).Font.Bold = True
                    nCount += 1
                End If
            Next

            frmWait.Message = "Формируем данные"

            ' Формируем данные
            Dim nCountRow As Integer = 2
            nCount = 1

            For Each RowItem As DataGridViewRow In objGrid.Rows
                nCount = 1
                For Each ColumnItem As DataGridViewColumn In objGrid.Columns
                    If ColumnItem.Visible Then
                        oApp.Cells(nCountRow, nCount).Value = RowItem.Cells(ColumnItem.Name).Value.ToString
                        nCount += 1
                    End If
                Next
                nCountRow += 1
            Next

            frmWait.Close()
            oApp.Visible = True
        Catch ex As Exception
            oApp = Nothing
            frmWait.Close()

            MsgBox("Ошибка при открытии MS Excel!" + vbCrLf + ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Ошибка")
        End Try

    End Sub
...
Рейтинг: 0 / 0
22.05.2013, 11:31
    #38267945
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
valex13, вот это плохой код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            For Each RowItem As DataGridViewRow In objGrid.Rows
                nCount = 1
                For Each ColumnItem As DataGridViewColumn In objGrid.Columns
                    If ColumnItem.Visible Then
                        oApp.Cells(nCountRow, nCount).Value = RowItem.Cells(ColumnItem.Name).Value.ToString
                        nCount += 1
                    End If
                Next
                nCountRow += 1
            Next

Обращение к Excel, в данном случае к отдельной ячейке - затратная операция. Разом заплнить строку (Range) гораздо производительней.
...
Рейтинг: 0 / 0
22.05.2013, 15:59
    #38268572
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
skyANAвот это плохой код
Это ерунда по сравнению с поздний / ранним связыванием. Вот где плохой код.
...
Рейтинг: 0 / 0
22.05.2013, 16:05
    #38268583
Gagarin_74
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
skyANAvalex13, вот это плохой код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            For Each RowItem As DataGridViewRow In objGrid.Rows
                nCount = 1
                For Each ColumnItem As DataGridViewColumn In objGrid.Columns
                    If ColumnItem.Visible Then
                        oApp.Cells(nCountRow, nCount).Value = RowItem.Cells(ColumnItem.Name).Value.ToString
                        nCount += 1
                    End If
                Next
                nCountRow += 1
            Next

Обращение к Excel, в данном случае к отдельной ячейке - затратная операция. Разом заплнить строку (Range) гораздо производительней.

А какой код написать что-бы разом из массива в Excel данные воткнуть?
...
Рейтинг: 0 / 0
22.05.2013, 16:09
    #38268606
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Списки List<>
Gagarin_74
А какой код написать что-бы разом из массива в Excel данные воткнуть?

Код: sql
1.
2.
3.
4.
object[,] data_ = new object[x, y];
..............
Microsoft.Office.Interop.Excel.Range excelcells = ws.get_Range(ws.Cells[1, 1], ws.Cells[x+1,y+1]);
excelcells.Value2 = data_;
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Списки List<> / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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