Как соединить Jagged массив с разделителем, используя string.Join? - PullRequest
4 голосов
/ 20 июня 2010

Как я могу решить ниже ошибку объединения строк. я преобразовал значение int в строковое значение, но произошла ошибка .... Посмотрите метод Join

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace SortArrayYusuf
{
    class Program
    {
        static void Main(string[] args)
        {
            //int[] array;

            //using (DataTable table = GetTable())
            //{
            //    array = (from DataRow row in table.Rows
            //             select
            //             (from DataColumn col in table.Columns
            //              select row[col].ToString().Length).Sum()).ToArray();
            //}

            //foreach (int value in array)
            //    Console.WriteLine(value);

            int[][] lengths;

            using (DataTable table = GetTable())
            {
                lengths = (from DataRow row in table.Rows
                           select
                           (from DataColumn col in table.Columns
                            select row[col].ToString().Length).ToArray()).ToArray();
            }

            foreach (int[] row in lengths)
            {
                Console.WriteLine(string.Join(", ", row.ToString()));
            }
            Console.ReadKey();
        }

        static DataTable GetTable()
        {
            //
            // Here we create a DataTable with four columns.
            //
            DataTable table = new DataTable();
            table.Columns.Add("Dosage", typeof(int));
            table.Columns.Add("Drug", typeof(string));
            table.Columns.Add("Patient", typeof(string));
            table.Columns.Add("Date", typeof(DateTime));

            //
            // Here we add five DataRows.
            //
            table.Rows.Add(25, "Indocin", "David", DateTime.Now);
            table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
            table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
            table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
            table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);

            return table;
        }
    }
}

foreach (int[] row in lengths) { Console.WriteLine(string.Join(", ", row.ToString())); }

Ответы [ 2 ]

2 голосов
/ 20 июня 2010

Вы просто хотите, чтобы все значения по очереди? Тогда SelectMany может помочь. Если вы работаете в .NET 4, здесь также может помочь перегрузка Join (с использованием последовательности, а не массива, поэтому вам не нужно создавать дополнительный отдельный массив или связываться с StringBuilder) :

        int[][] arr = { new[] {1,2,3}, new[] {4}, new[] {5,6}};
        string s = string.Join(",", arr.SelectMany(row => row));

, который возвращает "1,2,3,4,5,6".

2 голосов
/ 20 июня 2010
Console.WriteLine(string.Join(", ", row.Select(x => x.ToString()).ToArray()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...