:: Не фоксом единым
Пытаюсь освоить Linq
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Переделываю на си шарп фоксовую форму
В ней гд-то 26 разных вызовов Оракловых процедур
с refcursor, результат из Оракл получаю в datatable
Все переписал, а на одной застрял.
На исходной форме есть пара чеков,
по значениям которых данные уже на клиенте по разному группируются.
Остается то один набор полей с суммами, то другой.
Всю прошлую неделю и выходные читал документацию по linq
чтобы сделать аналогичное на Си.
Что-то ничего не выходит.

Конечно можно поступить попроще,
переделать процедуру на Оракл с разными ветками, если ничего не выйдет, так и поступлю
Вот пример одной из попыток
DbDataAdapter da = new OracleDataAdapter(cmd1);


DataTable ds = new DataTable();
//da.FillSchema(ds, SchemaType.Source, "myRefCursor");
da.Fill(ds);
cmd1.ExecuteScalar();

dt = ds;
// тут все нормально, данные из Оракл сидят в dt
this.dataGridView1.DataSource = dt;
this.label2.Text= this.lcprocname ;
this.CMDExls.Visible = true;
// тут пытаюсь как на Фоксе допилить результаты с сервера на клиенте, что ни пишу,
// ошибка переменная ddd находится в конфликте с ее ранними определениями, которых и нет
// фактически у меня нет никакого датасет, просто курсор с процедуры
// пробовал и var query = from ddd и объявлял типы полей в запросе. Не это.
// все поля группировки типа string суммы естественно numeric
if (procname == "usrvzhfsd.usrfzatrvx2")
{
if (this.checkBox1.Checked == false & this.checkBox2.Checked == false)
{

// IEnumerable<DataRow> query = from ddd in dt.AsEnumerable()
// group ddd by ddd.f1015, ddd.f1010, ddd.f10019 into pll
// select new
// {
// f1015 = pll.f1015,
// f1010 = pll.f1010,
// f10019 = pll.f10019,
// smr20 = Sum(pll.smr20),
// smr23 = Sum(pll.smr23),
// smr25 = Sum(pll.smr25),
// smr29 = Sum(pll.smr29),
// smrall = Sum(pll.smrall),
// smr26 = Sum(pll.smr26),
// smr44 = Sum(pll.smr44),
//smrall1 = Sum(pll.smrall1)
};
}

Сидели сейчас с опытным си шником
Похоже, такая простая штука тут без огромной крови не делается.
Проще Оракл процедуры попилить.



Исправлено 1 раз(а). Последнее : boba, 01.04.19 12:58
Ratings: 0 negative/0 positive
Re: Пытаюсь освоить Linq
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Не надо дататэйблом пользоваться, тем более нетипизированным. Нет в его DataRow никаких f1015 или smr20 - там есть лишь нетипизированный Item[], или типизированный Field<T>() - где надо так или иначе указывать требуемое поле - именем, номером по порядку, объектом DataColumn...
Если уж с EF никак, то хотя бы dapper - по идее он позволяет прямо из DataReader получить коллекцию объектов нужного типа.
Не, ну если очень охота этот ненужный DataTable, то пример в MSDN показывает как к нему запрос писать:
var productNames = from products in table.AsEnumerable() select products.Field<string>("ProductName");
foreach (string productName in productNames) {
Console.WriteLine(productName);
}


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Пытаюсь освоить Linq
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Игорь.
С полями и типами и item тоже пробовали.
Не выходит. Наибольший затык в группировке.
Судя по всему при необходимости группировать
несколько полей их нужно объединить в один ключ,
потом группировать, потом ключ снова распилить на поля.
Вчера с datareader удалось сгруппировать по одному полю,
по нескольким не удалось.
Ratings: 0 negative/0 positive
Re: Пытаюсь освоить Linq
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Владимир, я бы начал с простого - вместо нетипизированного дататэйбл где надо продираться через все эти Field<int>("f1015") перевести данные в коллекцию объектов - ну не хочешь dapper - сделай тот же длиннющий linq запрос с этими Field...
А потом - не вижу решительно никаких сложностей


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Пытаюсь освоить Linq
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Спасибо, сейчас попробую.
Ratings: 0 negative/0 positive
Re: Пытаюсь освоить Linq
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Сейчас попробую вариант с datareader
У меня готовые 2 процедуры, одна через datatable
другая datareader
Обе работают на процедуры с refcursor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 6 (Гостей: 6)

© 2000-2024 Fox Club 
Яндекс.Метрика