Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - SQL TO LINQ C#
Forum - C# / VB.NET - SQL TO LINQ C#

Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 11:46
Venerdì, 18/04/2014
Salve,
avrei bisogno di una mano per convertire questo benedetto datediff:

Codice sorgente - presumibilmente VB.NET

  1. CommandText := 'SET dateFORMAT dmy SELECT DISTINCT PIN,SIA FROM MODULI WHERE '
  2.         + 'datediff(day, convert(datetime, cast('01/01/1990' as datetime), 103), convert(datetime, DATA_RICHIESTA, 103)) >= 0 AND '
  3.         + 'datediff(day, convert(datetime, cast(' + Data('DATA_RICHIESTA_A') + ' as datetime), 103), convert(datetime, DATA_RICHIESTA, 103)) <= 0 AND '
  4.         + 'datediff(day, convert(datetime, cast(' + Data('DATA_VERSAMENTO_DA') + ' as datetime), 103), convert(datetime, DATA_VERSAMENTO, 103)) >= 0 AND '
  5.         + 'datediff(day, convert(datetime, cast(' + Data('DATA_VERSAMENTO_A') + ' as datetime), 103), convert(datetime, DATA_VERSAMENTO, 103)) <= 0 '
  6.  
  7.       //non considero tuttele deleghe  annullate con STATO = A della giornata
  8.       + ' AND STATO = ' + QuotedStr('R')
  9.  
  10.       + ' ORDER BY  PIN,SIA';



DATA_RICHIESTA ,DATA_VERSAMENTO => campi letti dal db in sql server
DATA_RICHIESTA_DA, DATA_RICHIESTA_A, DATA_VERSAMENTO_DA, DATA_VERSAMENTO_A => campi letti  dall'app.config

Ho provato a fare così :

Codice sorgente - presumibilmente C# / VB.NET

  1. var moduli = from db in contestoDB.MODULI
  2. where ...... && STATO = "R"
  3. orderby db.PIN, db.SIA
  4. select new {
  5.    db.PIN,
  6.    db.SIA
  7. };
  8.  
  9. moduli = moduli.Distinct();



Ma non so dove sbattere la testa!

Grazie




Se frequenti il forum dovresti personalizzare la tua firma.
PM Quote
Avatar
sps84 (Normal User)
Pro


Messaggi: 192
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 18:25
Domenica, 20/04/2014
Nella calusola where cosa dovresti verificare?


L'apprendista di C#...
PM Quote
Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 7:42
Martedì, 22/04/2014
:hail: qualcuno risponde... se no mi sembrava un cimitero. Allora in pratica funziona così :

Dato un file ini contenente :

DATA_RICHIESTA_DA (in questo caso ci ho messo direttamente il valore della data ossia 01/01/1990 per provarlo)
DATA_RICHIESTA_A = datamax 31/12/2999

DATA_VERSAMENTO_DA

DATA_VERSAMENTO_A

le leggo tramite la funzione Data('*data*').

E nel mio db ho un elenco di moduli in cui compare sia la data di richiesta e versamento da a .... quindi mi sembra di aver capito che sta confrontando che la differenza tra le date richieste sia >=, <= 0. Per cui come posso trasformare tale istruzione sql in linq tenendo conto che la variabile importante è Data('DATA_RICHIESTA_* etc..') perchè ogni volta che faccio l'istruzione linq leggo dal file direttamente.


Se frequenti il forum dovresti personalizzare la tua firma.
PM Quote
Avatar
sps84 (Normal User)
Pro


Messaggi: 192
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 12:45
Martedì, 22/04/2014
Rispondo non conoscendo la struttura esatta della tabella:

DateTime DATA_RICHIESTA_DA = Data("DATA_RICHIESTA_DA");

DateTime DATA_RICHIESTA_A = Data("DATA_RICHIESTA_A");

var query = from db in contestoDB.MODULI
where
db.DATA_RICHIESTA.Day >= 0
&& db.DATA_RICHIESTA.Day <= 0
&& db.DATA_VERSAMENTO.Day >= 0
&& db.DATA_VERSAMENTO.Day <= 0
&& STATO = "R"
orderby db.PIN, db.SIA
select new {
   db.PIN,
   db.SIA
};

Al limite dato che quasi sicuramente non funzionerà prova qualche tool online per convertire query sql in linq cerca con google.


L'apprendista di C#...
PM Quote
Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 14:39
Martedì, 22/04/2014
Ciao sps84,
io ho provato a fare così :

Codice sorgente - presumibilmente C# / VB.NET

  1. var datiModuli = from db in contestoDB.MODULI
  2.                                  where (((db.DATA_RICHIESTA - Convert.ToDateTime(GetDataByTipo("DRDA"))).TotalDays >= 0) &&
  3.                                        ((db.DATA_RICHIESTA - Convert.ToDateTime(GetDataByTipo("DRA"))).TotalDays <= 0) &&
  4.                                        ((db.DATA_VERSAMENTO - Convert.ToDateTime(GetDataByTipo("DVDA"))).TotalDays >= 0) &&
  5.                                        ((db.DATA_VERSAMENTO - Convert.ToDateTime(GetDataByTipo("DVA"))).TotalDays <= 0) &&
  6.                                        db.STATO == 'R')
  7.                                  orderby db.PIN, db.SIA
  8.                                  select new
  9.                                  {
  10.                                      db.PIN,
  11.                                      db.SIA
  12.                                  };
  13.  
  14.                 datiModuli = datiModuli.Distinct();



Non so se va bene. Cmq il Delhpi è da killare!


Se frequenti il forum dovresti personalizzare la tua firma.
PM Quote
Avatar
sps84 (Normal User)
Pro


Messaggi: 192
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 14:45
Martedì, 22/04/2014
scusami ma come fai a vedere se non va bene? Puoi provarlo il codice?


L'apprendista di C#...
PM Quote
Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 17:05
Martedì, 22/04/2014
Vorrei provare prima il codice in delphi per vedere che risultato dà facendo il debugging ma non conoscendo un compilatore per quel maledetto linguaggio delphi che sia.....non posso capire se il risultato è quello corretto no? Il problema è che sto convertendo un progetto di ben 13 anni fa... in c#.
Conosco il c# come le mie tasche ma il Delphi è proprio :grr:


Se frequenti il forum dovresti personalizzare la tua firma.
PM Quote
Avatar
sps84 (Normal User)
Pro


Messaggi: 192
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 20:22
Martedì, 22/04/2014
se magari posti il codice qualcuno può aiutarti


L'apprendista di C#...
PM Quote
Avatar
criscap1985 (Normal User)
Newbie


Messaggi: 11
Iscritto: 15/04/2014

Segnala al moderatore
Postato alle 21:17
Martedì, 22/04/2014
Allora eccoti il maledetto codice delphi in questo link : http://www.pierotofy.it/pages/extras/forum/171/1051030-del ...


Se frequenti il forum dovresti personalizzare la tua firma.
PM Quote