Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос из DataGridView 
V
    Опции темы
Stratus
Дата 1.8.2011, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



Нужно из DataGridView вытянуть массив строк

Пытаюсь создать запрос таким образом:

Код

var QueryAllSelectedNames = 
         from Names in dataGridView_SelectedNames.Rows
         select Names;


Не получается какая то нестыковка типов происходит..

Что можно придумать?
PM MAIL   Вверх
Kolovorot
Дата 3.8.2011, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: 1
Всего: 3



Так попробуй:
var QueryAllSelectedNames = 
         from Names in dataGridView_SelectedNames.Rows
         select Name;
 smile 
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
Stratus
Дата 3.8.2011, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



Что то я разницы не вижу.... в чем разница?
Говорю в данном виде не получается не стыкуются типы Names и dataGridView_SelectedNames.Rows.
Что предпринять не знаю...
PM MAIL   Вверх
WarHog
Дата 3.8.2011, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: 1
Всего: 2



Цитата

Код

var QueryAllSelectedNames = 
         from Names in dataGridView_SelectedNames.Rows
         select Name


и получить ошибку при компиляции. Откуда Name возьмется?

Stratus, проблема в том, что Rows имеют тип DataGridViewRowCollection, который не реализует дженерик интерфейсов. А linq-методы, интересующие тебя, реализованы как экстеншены к IEnumerable<T>, например
--------------------
PM MAIL   Вверх
Stratus
Дата 3.8.2011, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



ОК спасибо.
А что можно сделать?
В IEnumerable конвернтнуть не получается, с AsQueryable() нестыковки....
PM MAIL   Вверх
WarHog
Дата 3.8.2011, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: 1
Всего: 2



попробуй прокастить т.о.
Код

dataGridView_SelectedNames.Rows.Cast<DataGridViewRow>()

--------------------
PM MAIL   Вверх
Stratus
Дата 4.8.2011, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



Не работает - не допустим в этом контексте.
Проблема видимо в том, что DataGrid  не IEnumerable...
Как его с конвертировать в этот тип или реализовать этот интерфейс я не знаю.
Неужели медицина бессильна?!
PM MAIL   Вверх
WarHog
Дата 4.8.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: 1
Всего: 2



Stratus, каст нужно применять не к гриду, который, естественно, никаких IEnumerable не имплементит. Применяй к проперти Rows у грида
Код

DataGridViewRowCollection Rows { get; }

class DataGridViewRowCollection : IList, ICollection, IEnumerable

static IEnumerable<TResult> Cast<TResult>(this IEnumerable source)


--------------------
PM MAIL   Вверх
Stratus
Дата 11.8.2011, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



WarHog, что то я не соображу как вытянуть значения ячеек из грида?
Делаю так:
Код

            var QSelectedNames = (
                from DG in dataGridView_SelectedNames.Rows.Cast<DataGridViewRow>()
                select DG.Cells);

            foreach (DataGridViewCellCollection str in QSelectedTickers)
                Console.WriteLine(str);


Мне на выходе желательно массив значений ячеек бы получить....
PM MAIL   Вверх
WarHog
Дата 11.8.2011, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: 1
Всего: 2



из-за того, что проперти Cells у строки типа DataGridViewCellCollection, которое аналогично DataGridViewRowCollection не релизует дженерик интерфейсов, нужен еще один Cast:
Код

var bar = dataGridView1.Rows.Cast<DataGridViewRow>()
    .SelectMany(r => r.Cells.Cast<DataGridViewCell>(), (r, c) => c)
    .Select(c => c.Value);

На выходе - значения всех ячеек. Если нужны, например, значения ячеек определенного столбца, то можно сделать фильтрацию
Код

var bar = dataGridView1.Rows.Cast<DataGridViewRow>()
    .SelectMany(r => r.Cells.Cast<DataGridViewCell>(), (r, c) => c)
    .Where(c => c.ColumnIndex == 1)
    .Select(c => c.Value);

--------------------
PM MAIL   Вверх
Stratus
Дата 15.8.2011, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 27.5.2009

Репутация: нет
Всего: нет



WarHog спасибо сам бы недопер.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.1449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.