Добрый день всем. Есть определенная трудность в решении вроде бы типичной задачи.
Есть массив ранее созданный из двух столбцов таблицы datatable, необходимо перенести его в другую таблицу убрав при этом повторения.
Вроде бы вот тут
Здравствуйте, -n1l-, Вы писали:
N>Добрый день всем. Есть определенная трудность в решении вроде бы типичной задачи. N>Есть массив ранее созданный из двух столбцов таблицы datatable, необходимо перенести его в другую таблицу убрав при этом повторения. N>Вроде бы вот тут
_>А вообще-то, может стоило сделать DISTINCT еще в начале, в запросе?
я делал distinct массива, в итоге он возвращает кириешки партия1 партия2, как из этого сделать кириешки партия1
кириешки партия2 я недогадался, буду благодарен если подскажите.
и еще можно по подробнее насчет этого кода
var column2 = array1.Skip(tableLength).Take(tableLength);
_> var result = column1.Zip(column2, (c1, c2) => new { Column1 = c1, Column2 = c2 });
Re[4]: Помогите пожалуйста разобраться с DataTable
Здравствуйте, -n1l-, Вы писали:
_>>А вообще-то, может стоило сделать DISTINCT еще в начале, в запросе? N>я делал distinct массива, в итоге он возвращает кириешки партия1 партия2, как из этого сделать кириешки партия1 N> кириешки партия2 я недогадался, буду благодарен если подскажите.
Покажите этот запрос, так не могу сказать.
N>и еще можно по подробнее насчет этого кода
// в исходном массиве данные колонок идут последовательно, колонок всего две, поэтому делим массив на 2 частиint tableLength = array1.Length / 2;
// берем половину массива от начала - это будет первая колонкаvar column1 = array1.Take(tableLength).ToList();
// пропускаем половину массива от началаа и берем столько же - это будет вторая колонкаvar column2 = array1.Skip(tableLength).Take(tableLength).ToList();
// специальный метод-расширение Zip позволяет "сшить" две "параллельных" последовательности.
// аргументы:
// - второй массив
// - лямбда-функция, которая принимает два параметра (элемент первой и второй последовательности) и возвращает элемент результата.
// В данном случае результат - это анонимный класс (без имени, то есть), с двумя полями Column1 и Column2.var result = column1.Zip(column2, (c1, c2) => new { Column1 = c1, Column2 = c2 });
Можно было объявить класс:
public class MyTable
{
public string Column1 {get; set; }
public string Column2 {get; set; }
}
И использовать его:
var result = column1.Zip(column2, (c1, c2) => new MyTable() { Column1 = c1, Column2 = c2 });
Ну а можно и просто ручками:
List<MyTable> list = new List<MyTable>();
for(int i=0; i<tableLength; ++i)
{
MyTable t = new MyTable();
t.Column1 = column1[i];
t.Column2 = column2[i];
list.Add(t);
}
Здравствуйте, dmitry_npi, Вы писали:
_>Здравствуйте, -n1l-, Вы писали:
_>>>А вообще-то, может стоило сделать DISTINCT еще в начале, в запросе? N>>я делал distinct массива, в итоге он возвращает кириешки партия1 партия2, как из этого сделать кириешки партия1 N>> кириешки партия2 я недогадался, буду благодарен если подскажите.
_>Покажите этот запрос, так не могу сказать.
а че запрос, просто вот так написал — array.Distinct().ToArry()
Re[5]: Помогите пожалуйста разобраться с DataTable
Простите меня за дерзость, я совсем забыл что не поблагодарил вас.
Спасибо вам за помощь.
Но хотелось бы услышать ваши идеи насчет distinct'а массива.
Еще раз больше вам спасибо.
Re[6]: Помогите пожалуйста разобраться с DataTable
Здравствуйте, -n1l-, Вы писали:
N>Простите меня за дерзость, я совсем забыл что не поблагодарил вас. N>Спасибо вам за помощь. N>Но хотелось бы услышать ваши идеи насчет distinct'а массива. N>Еще раз больше вам спасибо.
Да нет проблем.
По теме: а зачем вы сливали столбцы в массив? После вытягивания столбцов в один массив применять к ним Distinct() — это вообще бессмысленно и как бы даже разрушительно.
Я имел в виду, почему вы не сделали DISTINCT на стадии SQL-запроса, ведь DataTable из базы вытягивается, так?
Здравствуйте, dmitry_npi, Вы писали:
_>Здравствуйте, -n1l-, Вы писали:
N>>Простите меня за дерзость, я совсем забыл что не поблагодарил вас. N>>Спасибо вам за помощь. N>>Но хотелось бы услышать ваши идеи насчет distinct'а массива. N>>Еще раз больше вам спасибо.
_>Да нет проблем.
_>По теме: а зачем вы сливали столбцы в массив? После вытягивания столбцов в один массив применять к ним Distinct() — это вообще бессмысленно и как бы даже разрушительно.
_>Я имел в виду, почему вы не сделали DISTINCT на стадии SQL-запроса, ведь DataTable из базы вытягивается, так?
Я прохожу собеседование просто, и мне дали задание, построить функцию в которую в качестве параметров подается массив string[] leftColumns(созданный из двух столбцов таблицы), если применять к нему дистинкт сразу, то как потом определять сколько строк было в таблице из первого и второго столбца, так как это значение мне потом было нужно что бы построить ту самую таблицу из уникальных значений двух столбцов исходной таблицы.