Мне нужно проверить данные, возвращенные из запроса Sybase, чтобы проверить первый столбец, который соответствует электронной таблице, в которой будет отображаться данный набор данных. Я могу правильно получить данные в своем наборе данных, но проблема возникает, когда я пытаюсь удалить сгруппированный столбец.
Мои образцы данных выглядят следующим образом:
public static DataTable JustDataTableWithSheetColumn()
{
var sample = new DataTable();
sample.Columns.Add("SomethingSheet", typeof(string));
sample.Columns.Add("Column1", typeof(string));
sample.Columns.Add("Column2", typeof(string));
sample.Rows.Add("1", "Somestuff", "this other stuff");
sample.Rows.Add("1", "Fluffy", "this stuff");
sample.Rows.Add("2", "ToolShed", "this other stf");
sample.Rows.Add("2", "FudgeCycles", "this oer stuff");
sample.Rows.Add("2", "Crap", "thr stuff");
sample.Rows.Add("2", "stuff and stuff", "thiuff");
sample.Rows.Add("2", "test crap", "this stuff");
sample.Rows.Add("2", "dungheap", "this othuff");
sample.Rows.Add("3", "people eater", "this other stf");
sample.Rows.Add("3", "no purple people", "ths oth stff");
return sample;
}
И следующее правильно группирует и применяет их к таблицам данных:
var thing = DataTableExamples.JustDataTableWithSheetColumn();
if (thing.Columns[0].ColumnName.Contains("Sheet"))
{
var test = from t in thing.AsEnumerable()
group t by t.ItemArray[0]
into g
select g.ToList().CopyToDataTable();
}
Я пытался без .CopyToDataTable() просто иметь коллекцию DataRows и пытался запросить те, которые используют Skip(1), но я думаю, что мой порядок операций неверен или я нахожусь в этой туманности. Иногда я теряюсь с IEnumerable vs IQueryable и все эти вариации.
Вот так:
datarow.ItemArray.Skip(1).ToArray();
Я также пытался пройти через коллекцию данных и использовать dt.RemoveAt(0), но я не могу сослаться на управляемую таблицу данных (или делаю это неправильно).
foreach (var dt in test)
{
dt.Columns.RemoveAt(0);
}
Суть в том, что первый столбец данных, возвращенных из базы данных, не нужно отображать или использовать после того, как я переведу их в таблицы данных для последующего добавления в набор данных, который я возвращаю из этого API.
Поэтому я ищу элегантный способ получить то, что мне нужно, с минимальным количеством упаковок и распаковок. Эта часть должна быть выполнена до добавления ее в конечный набор данных, потому что каждая из этих странных хранимых процедур потенциально может возвращать другую структуру данных, поэтому я не могу просто удалить все первые столбцы из конечного набора данных.
Спасибо за вашу помощь.