У меня есть DataTable
, который возвращает результат одного столбца, состоящий из нескольких значений, разделенных запятыми.Сплит-значения, разделенные запятыми из datatable
Как разбить эту колонку DataTable
на основе запятых?
С помощью
У меня есть DataTable
, который возвращает результат одного столбца, состоящий из нескольких значений, разделенных запятыми.Сплит-значения, разделенные запятыми из datatable
Как разбить эту колонку DataTable
на основе запятых?
С помощью
Каков желаемый результат?
Если вы хотите string[]
, который содержит все значения:
string[] allValues = dt.AsEnumerable()
.SelectMany(r => r.Field<string>(0).Split(','))
.ToArray();
Если вы просто хотите IEnumerable<string[]>
где каждый элемент содержит все значения строки:
IEnumerable<string[]> allRowValues = dt.AsEnumerable()
.Select(r => r.Field<string>(0).Split(','));
В любом случае я использую String.Split
для получения string[]
из разделенных запятой string
.
Edit: «я имею список, который я хочу, чтобы заполнить»
Тогда вы можете либо привести их к object
, если вы действительно нуждаетесь в них в качестве объекта:
List<object> allValues = dt.AsEnumerable()
.SelectMany(r => r.Field<string>(0).Split(','))
.Select(str => (object) str)
.ToList();
или использования List.AddRange
если у вас уже есть список, который вы хотите использовать:
var allValues = dt.AsEnumerable()
.SelectMany(r => r.Field<string>(0).Split(','))
.Select(str => (object) str);
objectList.AddRange(allValues);
У меня есть «Список
Почему вы хотите использовать 'object', если это на самом деле строка? Но вы можете легко скомпоновать объект и использовать 'ToList' вместо' ToArray'. Или используйте 'List.AddRange', чтобы добавить их. –
@roohan: однако я отредактировал свой ответ, чтобы показать вам, как это работает. –
попробовать это:
//fruit dtcolumn values
string fruit = "Apple,Banana,Orange,Strawberry";
string[] split = fruit.Split(',');
foreach (string item in split)
{
Console.WriteLine(item);
}
Где находится ваш 'DataTable'? –
Попробуйте
//datatable should contain result set
DataTable datatable = new DataTable();
datatable = YourQuery();
if (datatable.Rows.Count > 0)
{
foreach(int count=0;count < datatable.Rows ; count++)
{
string result = datatable.Rows[count];
string[] array = result.split(,);
//do what you want to do
}
}
, если вы хотите сделать это в C#, то попробуйте таблицу [ "col1"]. ToString(). Split ("". ToCharArray())
, но если вы хотите сделать это в SQL, попробуйте это: http://amerzafar.wordpress.com/2011/03/15/sql-function-to-convert-comma-separated-string-to-table/
Любые усилия до сих пор? –
String.Split возвращает массив – Steffe