powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Передача переменной var из одной в другую процедуру
24 сообщений из 24, страница 1 из 1
Передача переменной var из одной в другую процедуру
    #35878182
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В одной из процедур класса вот такая переменная:

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) не прокатывает, т.к. надо чётко указать тип переменной. Где его взять, не сильно напрягая мозг в вычислении получившегося типа?
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878249
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin BykovВ одной из процедур класса вот такая переменная:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
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) не прокатывает, т.к. надо чётко указать тип переменной. Где его взять, не сильно напрягая мозг в вычислении получившегося типа?
а какой смысл в SomeProcedure(var a)? Как компилятор узнает, что это за void? вы же наверняка захотите использовать что-то типа a.НекоеСвойство...
если вы хотите реализовать сие в LINQ - то тут проблем никаких не возникнет.
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878304
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum
а какой смысл в SomeProcedure(var a)? Как компилятор узнает, что это за void? вы же наверняка захотите использовать что-то типа a.НекоеСвойство...
если вы хотите реализовать сие в LINQ - то тут проблем никаких не возникнет.

Не void а var.
SomeProcedure(var a) это та процедура где я дальше хочу что-то сделать.
И фразу "если вы хотите реализовать сие в LINQ - то тут проблем никаких не возникнет" я вообще не понял... Я вроде в LINQ и пытаюсь сделать это.... Просто в роцедуре, где , эта переменная родилась настал момент ветвления. я вот и хочу раскидать дальнейшие действия по отдельным процедурам
Мож я непонятно вопрос поставил?
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878324
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin Bykov
Не void а var.
да, это я оговорился. =)

Konstantin Bykov
И фразу "если вы хотите реализовать сие в LINQ - то тут проблем никаких не возникнет" я вообще не понял... Я вроде в LINQ и пытаюсь сделать это.... Просто в роцедуре, где , эта переменная родилась настал момент ветвления. я вот и хочу раскидать дальнейшие действия по отдельным процедурам
Мож я непонятно вопрос поставил?
тогда всё должно быть просто. Для начала покажите свой LINQ-код =)
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878384
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum,

Он во вложении... надо из процедуры ClearComputeData передать объект net_v_iprod в процедуру SaveNewProds
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878392
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin BykovCompositum,

Он во вложении... надо из процедуры ClearComputeData передать объект net_v_iprod в процедуру SaveNewProds
я не буду качать, вы просто покажите код здесь, на форуме.
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878393
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum,

ЗЫ: Если сделать так как я сделал
private void SaveNewProds(object net_v_iprod)
{
throw new NotImplementedException();
}

теряется структура. А мне этого не надо
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878479
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum,

private void ClearComputeData(DataSet dset, string fname)
{
//print tables state
LogWriter.pr("Tables:");
foreach (DataTable table in dset.Tables)
{
LogWriter.pr("================================");
LogWriter.pr("table: " + table.TableName + "; RowCount: " + table.Rows.Count.ToString());
LogWriter.pr("Table structure:");
foreach (DataColumn col in table.Columns)
{
LogWriter.pr("\t" + col.ColumnName + "\t" + col.DataType.ToString());
}
LogWriter.pr("================================");
}
//clearing data
DataTable Catalog_Truserv_Item = dset.Tables["Catalog_Truserv_Item"];
DataTable Inventory_Truserv_Item = dset.Tables["Inventory_Truserv_Item"];
IEnumerable<DataRow> Inventory =
from a in Inventory_Truserv_Item.AsEnumerable()
select a;
IEnumerable<DataRow> Catalog =
from b in Catalog_Truserv_Item.AsEnumerable()
select b;
IEnumerable<System.Linq.IGrouping<string, System.Data.DataRow>> 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
};
LogWriter.pr("CatalogLt4 count: " + CatalogLt4.Count().ToString());
var clearAll = CatalogLt4.Where(c =>
!c.catalog.Field<string>("vendor_name").Contains("TRUE VALUE") &&
!c.catalog.Field<string>("retail_uom").Equals("DSP") &&
!c.catalog.Field<string>("dpt_code").Equals("Z ") &&
!c.catalog.Field<string>("Exclusive_Brand_Code").Equals("TV") &&
!c.catalog.Field<string>("Exclusive_Brand_Code").Equals("TS") &&
Convert.ToDouble(c.catalog.Field<string>("srp_cost")) > 0 &&
c.inventory == null
);
LogWriter.pr("clearAll count: " + clearAll.Count().ToString());
//add Hazmat
DataTable HazmatTable = dset.Tables["Hazmat"];
IEnumerable<DataRow> Hazmat =
from a in HazmatTable.AsEnumerable()
select a;
var catalog_hazmat =
from ship in clearAll
join haz in Hazmat
on ship.catalog.Field<string>("item_nbr") equals haz.Field<string>("field 1").Substring(4, 6) into hz
from haz in hz.DefaultIfEmpty()
select new
{
catalog = ship,
hazmat = haz,
is_hazmat = haz == null ? false : true,
is_pack_type_f = ship.catalog.Field<string>("member_pack_type") == "F" ? true : false
};
LogWriter.pr("catalog_hazmat count: " + catalog_hazmat.Count().ToString());
//shipping calculation
var pre_ship =
from sh in catalog_hazmat
select new
{
catalog = sh.catalog.catalog,
hazmat = sh.hazmat,
cost = sh.is_hazmat || sh.is_pack_type_f ?
Convert.ToDouble(sh.catalog.catalog.Field<string>("member_cost"))
* Convert.ToDouble(sh.catalog.catalog.Field<string>("member_pack_qty"))
: Convert.ToDouble(sh.catalog.catalog.Field<string>("member_cost")),
weight = sh.is_hazmat || sh.is_pack_type_f ?
Convert.ToDouble(sh.catalog.catalog.Field<string>("pack_weight"))
: Convert.ToDouble(sh.catalog.catalog.Field<string>("weight")),
length = sh.is_hazmat || sh.is_pack_type_f ?
Convert.ToDouble(sh.catalog.catalog.Field<string>("pack_length"))
: Convert.ToDouble(sh.catalog.catalog.Field<string>("length")),
width = sh.is_hazmat || sh.is_pack_type_f ?
Convert.ToDouble(sh.catalog.catalog.Field<string>("pack_width"))
: Convert.ToDouble(sh.catalog.catalog.Field<string>("width")),
height = sh.is_hazmat || sh.is_pack_type_f ?
Convert.ToDouble(sh.catalog.catalog.Field<string>("pack_height"))
: Convert.ToDouble(sh.catalog.catalog.Field<string>("height"))
};
var shipping_ =
from sh in pre_ship
select new
{
catalog = sh.catalog,
cost = sh.cost,
shipping_UPS_1 = (double)(sh.weight <= 70 ? 5 + 0.72 * sh.weight : 0),
shipping_UPS_2 = (double)(sh.weight > 70 && sh.weight < 100 ? 5 + 0.72 * 70 + 1 * (sh.weight - 70) : 0),
shipping_UPS_3 = (double)(sh.weight >= 100 ? 5 + 0.72 * 70 + 1 * 30 + 1.2 * (sh.weight - 100) : 0),
shipping_track = 89 + 1.2 * sh.weight,
ship_by_track = (double)(sh.weight > 75 || sh.length > 42 || sh.width > 42 || sh.height > 42 ? 1 : 0),
ship_by_UPS = (double)(sh.weight > 75 || sh.length > 42 || sh.width > 42 || sh.height > 42 ? 0 : 1),
hazmat_ground = (double)(sh.hazmat == null ? 0 : sh.hazmat.Field<string>("field 2") == "0000" ? 1 : 0),
hazmat_ground_add = (double)70,
hazmat_truck = (double)(sh.hazmat == null ? 0 : sh.hazmat.Field<string>("field 2") != "0000" ? 1 : 0),
hazmat_truck_add = (double)0
};
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
};
LogWriter.pr("shipping count: " + shipping.Count().ToString());
//saving data to output file
if (shipping.Count() != 0)
{
string s = "";
string TXTfile = fname;
StreamWriter sw = new StreamWriter(TXTfile, false, Encoding.GetEncoding("cp866"));
//write head
s += ("item_nbr") + "\t";
s += ("srp_cost") + "\t";
s += ("member_cost") + "\t";
s += ("short_description") + "\t";
s += ("vendor_id") + "\t";
s += ("dpt_code") + "\t";
s += ("class_code") + "\t";
s += ("subclass_code") + "\t";
s += ("vendor_name") + "\t";
s += ("upc") + "\t";
s += ("long_description") + "\t";
s += ("weight") + "\t";
s += ("length") + "\t";
s += ("width") + "\t";
s += ("height") + "\t";
s += ("pack_weight") + "\t";
s += ("pack_length") + "\t";
s += ("pack_width") + "\t";
s += ("pack_height") + "\t";
s += ("retail_pack_qty") + "\t";
s += ("member_pack_qty") + "\t";
s += ("member_pack_type") + "\t";
s += ("member_break_pack") + "\t";
s += ("model") + "\t";
s += ("item_picture_id") + "\t";
s += ("country_code") + "\t";
s += ("to_be_discontinued") + "\t";
s += ("retail_uom") + "\t";
s += ("Edit_Divisor") + "\t";
s += ("Exclusive_Brand_Code") + "\t";
s += ("ds_cost") + "\t";
s += ("substitute_item_nbr") + "\t";
s += "shipping_UPS_1" + "\t";
s += "shipping_UPS_2" + "\t";
s += "shipping_UPS_3" + "\t";
s += "shipping_track" + "\t";
s += "ship_by_track" + "\t";
s += "ship_by_UPS" + "\t";
s += "cost" + "\t";
s += "hazmat_ground" + "\t";
s += "hazmat_ground_add" + "\t";
s += "hazmat_track" + "\t";
s += "hazmat_track_add" + "\t";
s += "cost_after_shipping";
sw.WriteLine(s);
//write body
foreach (var row in shipping)
{
s = "";
s += row.catalog.Field<string>("item_nbr") + "\t";
s += row.catalog.Field<string>("srp_cost") + "\t";
s += row.catalog.Field<string>("member_cost") + "\t";
s += row.catalog.Field<string>("short_description") + "\t";
s += row.catalog.Field<string>("vendor_id") + "\t";
s += row.catalog.Field<string>("dpt_code") + "\t";
s += row.catalog.Field<string>("class_code") + "\t";
s += row.catalog.Field<string>("subclass_code") + "\t";
s += row.catalog.Field<string>("vendor_name") + "\t";
s += row.catalog.Field<string>("upc") + "\t";
s += row.catalog.Field<string>("long_description") + "\t";
s += row.catalog.Field<string>("weight") + "\t";
s += row.catalog.Field<string>("length") + "\t";
s += row.catalog.Field<string>("width") + "\t";
s += row.catalog.Field<string>("height") + "\t";
s += row.catalog.Field<string>("pack_weight") + "\t";
s += row.catalog.Field<string>("pack_length") + "\t";
s += row.catalog.Field<string>("pack_width") + "\t";
s += row.catalog.Field<string>("pack_height") + "\t";
s += row.catalog.Field<string>("retail_pack_qty") + "\t";
s += row.catalog.Field<string>("member_pack_qty") + "\t";
s += row.catalog.Field<string>("member_pack_type") + "\t";
s += row.catalog.Field<string>("member_break_pack") + "\t";
s += row.catalog.Field<string>("model") + "\t";
s += row.catalog.Field<string>("item_picture_id") + "\t";
s += row.catalog.Field<string>("country_code") + "\t";
s += row.catalog.Field<string>("to_be_discontinued") + "\t";
s += row.catalog.Field<string>("retail_uom") + "\t";
s += row.catalog.Field<string>("Edit_Divisor") + "\t";
s += row.catalog.Field<string>("Exclusive_Brand_Code") + "\t";
s += row.catalog.Field<string>("ds_cost") + "\t";
s += row.catalog.Field<string>("substitute_item_nbr") + "\t";
s += row.shipping_UPS_1.ToString() + "\t";
s += row.shipping_UPS_2.ToString() + "\t";
s += row.shipping_UPS_3.ToString() + "\t";
s += row.shipping_track.ToString() + "\t";
s += row.ship_by_track.ToString() + "\t";
s += row.ship_by_UPS.ToString() + "\t";
s += row.cost.ToString() + "\t";
s += row.hazmat_ground.ToString() + "\t";
s += row.hazmat_ground_add.ToString() + "\t";
s += row.hazmat_truck.ToString() + "\t";
s += row.hazmat_truck_add.ToString() + "\t";
s += row.cost_after_shipping.ToString();
sw.WriteLine(s);
}
sw.Close();
//new products (te kotorih net v IPROD)
var iprod =
from a in dset.Tables["iprod"].AsEnumerable()
select new
{
pn = a.Field<string>("field 2"),
manuf_name = a.Field<string>("field 3"),
vendor_pn = a.Field<string>("field 5"),
};
//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
// };
var net_v_iprod =
from ni in shipping
join ip in iprod
on ni.catalog.Field<string>("item_nbr") equals ip.vendor_pn into j
from ip in j.DefaultIfEmpty()
where ip == null
select new
{
shipping = ni,
};
SaveNewProds(net_v_iprod);
LogWriter.pr("net_v_iprod count: " + net_v_iprod.Count().ToString());
}
}

private void SaveNewProds(object net_v_iprod)
{
throw new NotImplementedException();
}



Сорри, что так длинно - проблема на лицо: я не знаю как переменные var куда-то передать
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878585
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin Bykov,

много лишнего кода. никогда не выкладывайте такой объем - его все равно не будут читать. выложите только код самого LINQ-запроса . И оформляйте сообщение правильно (с тэгами) дабы читаемо было.
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878655
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum,

попробую упростить:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
        private void ClearComputeData(DataSet dset, string fname)
        {
            //....какой-то код....
            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
                };
                SaveNewProds(shipping);
        }

        private void SaveNewProds(object net_v_iprod)
        {
            throw new NotImplementedException();
        }
Вот теперь более читаемо.
Дак вот, в процедуре SaveNewProds(object net_v_iprod) я теряю структуру
Как не терять?
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878673
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никак, только если завести описание того класса, который создается в результате запроса, анонимные типы нельзя выносить за пределы того места, где они были созданы. var на самом деле не "какой-то тип", он заменяется реальным типом на этапе компиляции.
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878684
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы,

как узнать этот тип на этапе разработки? может куда какую кнопочку нажать в VS Express и получить получившийся тип?
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878697
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin Bykov,

имхо в этом случае нужно использовать лямбда-выражения в составе этого же LINQ-запроса. тогда получите нужный вам доступ к свойствам
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878722
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CompositumKonstantin Bykov,

имхо в этом случае нужно использовать лямбда-выражения в составе этого же LINQ-запроса. тогда получите нужный вам доступ к свойствам

А как? Поподробней, плз., можно на моём примере?
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878738
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin BykovCompositumKonstantin Bykov,

имхо в этом случае нужно использовать лямбда-выражения в составе этого же LINQ-запроса. тогда получите нужный вам доступ к свойствам

А как? Поподробней, плз., можно на моём примере?
можно, только вы покажите нормальный код вашего метода, вместо этого:
Код: plaintext
1.
2.
3.
4.
private void SaveNewProds(object net_v_iprod)
        {
            throw new NotImplementedException();
        }
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878790
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CompositumKonstantin BykovCompositumKonstantin Bykov,

имхо в этом случае нужно использовать лямбда-выражения в составе этого же LINQ-запроса. тогда получите нужный вам доступ к свойствам

А как? Поподробней, плз., можно на моём примере?
можно, только вы покажите нормальный код вашего метода, вместо этого:
Код: plaintext
1.
2.
3.
4.
private void SaveNewProds(object net_v_iprod)
        {
            throw new NotImplementedException();
        }


Вот, попытаемся:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
private void ClearComputeData(DataSet dset, string fname)
        {
            //....какой-то код....
            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
                };
                SaveNewProds(shipping);
        }

        private void SaveNewProds(object net_v_iprod)
        {
            if (net_v_iprod.Count() != 0)//output to file
            {
                s = "";
                string TXTfile = new_products;
                StreamWriter sw = new StreamWriter(TXTfile, false, Encoding.GetEncoding("cp866"));
                //write head
                s += ("item_nbr") + "\t";
                s += ("srp_cost") + "\t";
                //...... и 38 столбиков ещё...
                sw.WriteLine(s);
                //write body
                foreach (var row in net_v_iprod)
                {
                    s = "";
                    s += row.shipping.catalog.Field<string>("item_nbr") + "\t";
                    s += row.shipping.catalog.Field<string>("srp_cost") + "\t";
                    //...... и 38 столбиков ещё...
                    sw.WriteLine(s);
                }
                sw.Close();
             }
        }

НО! это так не работает. это так хочется сделать, но не знается как без бы попроще...
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35878899
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, тело метода не маленькое, тут лямбду не удобно применять. в такой ситуации проще создать конкретный класс и упаковывать данные не в анонимный тип, а в экземпляр этого самого класса.
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35879058
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositumда, тело метода не маленькое, тут лямбду не удобно применять. в такой ситуации проще создать конкретный класс и упаковывать данные не в анонимный тип, а в экземпляр этого самого класса.

По ходу так и придётся делать. Как бы вот только его получить "на автомате" в VS Express. Чтоб руками не конструировать. Ведь как-то ж его тип появляется во всплывающей подсказке. Т.е. студия его уже определила и знает. Как его вывести на экран или в буфер обмена чтоли....
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35879387
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Композиум, браво, только с 10-ого раза смог вникнуть в суть проблемы и родить дубликат моего ответа :)

Автор, как маленький, берешь что написал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
                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
                };
                
удаляешь что не нужно, приписываешь имя, добавляешь типы данных и {get;set;} на конце, получаешь готовый класс:

Код: plaintext
1.
2.
3.
4.
5.
6.
                class MyGovnoClass
                {
                    public string catalog {get;set};
                    public double cost {get;set;}
                    public string shipping_UPS_1 {get;set;}
                    ... bla bla bla ...
                };
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35879443
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зы,

ага, только вот sh.catalog, sh.cost такие же var....
VS Express показывает его тип в виде new {bla,bla,bla} во всплывающей подсказке. Т.е. студия его уже определила и знает. Как его вывести на экран или в буфер обмена чтоли....
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35879689
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Определения всех остальных классов ты тоже уже написал, в чем проблема? Если тебе лень писать, то научись думать, лень - двигатель рефакторинга.
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35880188
gp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите, но еще раз про использование Resharper:

было:
Код: plaintext
1.
2.
3.
private void TestAnonimousToNamedTypeRefactoring()
    	{
    		var q = from i in new[] {"a"} select new {i};
    	}

выделяем "new {i}"
Правая кнопка / Refactor / Convert / Anonimous to named type

стало:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class AnonymousClass
    	{
    		public string i { get; set; }
    	}

    	private void TestAnonimousToNamedTypeRefactoring()
    	{
    		var q = from i in new[] {"a"} select new AnonymousClass {i = i};
    	}

или даже:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
public class AnonymousClass
    	{
    		private readonly string _i;

    		public string i
    		{
    			get { return _i; }
    		}

    		public AnonymousClass(string i)
    		{
    			_i = i;
    		}

    		public override string ToString()
    		{
    			var builder = new StringBuilder();
    			builder.Append("{ i = ");
    			builder.Append(i);
    			builder.Append(" }");
    			return builder.ToString();
    		}

    		public override bool Equals(object value)
    		{
    			var type = value as AnonymousClass;
    			return (type != null) && EqualityComparer<string>.Default.Equals(type.i, i);
    		}

    		public override int GetHashCode()
    		{
    			int num = 0x7a2f0b42;
    			return (-1521134295*num) + EqualityComparer<string>.Default.GetHashCode(i);
    		}
    	}

    	private void TestAnonimousToNamedTypeRefactoring()
    	{
    		var q = from i in new[] {"a"} select new AnonymousClass(i);
    	}

нет дурацких вопросов, есть дурацкие ответы
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35880701
Konstantin Bykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё. Всем спасибо. Понял что нет таблетки. Закрываем тему (только как не знаю).
...
Рейтинг: 0 / 0
Передача переменной var из одной в другую процедуру
    #35881288
тихая гавань
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin BykovВсё. Всем спасибо. Понял что нет таблетки. Закрываем тему (только как не знаю).
При выходе за скобки var теряется, мс рекомендует пользоваться реальными типами
что бы приблизить var к фунциональному типу, ждем отних индексаторов
Жуть....
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Передача переменной var из одной в другую процедуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]