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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать var переменную другой процедуре, Передача переменной var другой прочцедур 
:(
    Опции темы
KonstantinBykov
Дата 19.3.2009, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В одной из процедур класса вот такая переменная:

var shipping =
                from sh in shipping_
                select new
                {
                    catalog = sh.catalog,
                    cost = sh.cost,
                    shipping_UPS_1 = sh.shipping_UPS_1,
                    shipping_UPS_2 = sh.shipping_UPS_2,
                    shipping_UPS_3 = sh.shipping_UPS_3,
                    shipping_track = sh.shipping_track,
                    ship_by_track = sh.ship_by_track,
                    ship_by_UPS = sh.ship_by_UPS,
                    hazmat_ground = sh.hazmat_ground,
                    hazmat_ground_add = sh.hazmat_ground_add,
                    hazmat_truck = sh.hazmat_truck,
                    hazmat_truck_add = sh.hazmat_truck_add,
                    cost_after_shipping = sh.cost 
                        + sh.shipping_UPS_1 * sh.ship_by_UPS
                        + sh.shipping_UPS_2 * sh.ship_by_UPS
                        + sh.shipping_UPS_3 * sh.ship_by_UPS
                        + sh.shipping_track * sh.ship_by_track
                        + sh.hazmat_ground_add * sh.hazmat_ground
                        + sh.hazmat_truck_add * sh.hazmat_truck
                };

Как мне её, несчастную, передать в другую процедуру для дальнейшей обработки. Вариант такого рода как void SomeProcedure(var a) не прокатывает, т.к. надо чётко указать тип переменной. Где его взять, не сильно напрягая мозг в вычислении получившегося типа? 
PM MAIL   Вверх
Rififi
Дата 19.3.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



KonstantinBykov, 
Как мне её, несчастную, передать в другую процедуру для дальнейшей обработки.
IEnumarable<object>, наверное...
PM MAIL   Вверх
KonstantinBykov
Дата 19.3.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В этом случае я теряю всю структуру, что не есть гуд.
PM MAIL   Вверх
Rififi
Дата 19.3.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



KonstantinBykov, 
что естейсствено, ты же юзаешь анонимный тип.
PM MAIL   Вверх
KonstantinBykov
Дата 19.3.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Rififi, 
а как не терять?
PM MAIL   Вверх
Idsa
Дата 19.3.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



Можно использовать Generic'и:
Код

void SomeProcedure<T>(T a)
{
...
}



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
HalkaR
Дата 19.3.2009, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

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



Сделай класс, содержащий все нужные поля и делай не анонимный тип, а объекты этого класса.
PM MAIL   Вверх
KonstantinBykov
Дата 19.3.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



HalkaR, 

Этого я и боялся...

Ну вот пример из моего кода:

            IEnumerable<DataRow> Inventory =
                from a in Inventory_Truserv_Item.AsEnumerable()
                select a;
            IEnumerable<DataRow> Catalog =
                from b in Catalog_Truserv_Item.AsEnumerable()
                select b;
            var InventoryGroup =
                Inventory.GroupBy(d => d.Field<string>("item_nbr")).Where(a => a.Count() < 4);
            var CatalogLt4 =
                from catalog in Catalog
                join inventory in InventoryGroup
                on catalog.Field<string>("item_nbr") equals inventory.Key into co
                from inventory in co.DefaultIfEmpty()
                select new
                {
                    catalog = catalog,
                    inventory = inventory
                };


Какой класс создать для CatalogLt4 ?
PM MAIL   Вверх
Rififi
Дата 19.3.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



KonstantinBykov, 
у тебя вариантов только три:
1. не использовать анонимы
2. использовать анонимы, но только в месте создания (in scope) (как собстна, и было задумано)
3. reflection
PM MAIL   Вверх
KonstantinBykov
Дата 19.3.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Цитата(Rififi @  19.3.2009,  11:52 Найти цитируемый пост)
KonstantinBykov, 
у тебя вариантов только три:
1. не использовать анонимы
2. использовать анонимы, но только в месте создания (in scope) (как собстна, и было задумано)
3. reflection 


reflection - не понял. что это?

> использовать анонимы, но только в месте создания (in scope) (как собстна, и было задумано)
это имеется ввиду что там где создал там же с ними и распрощался?
PM MAIL   Вверх
KonstantinBykov
Дата 20.3.2009, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


 




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


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

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