2 in 1 method ?

0

Potrzebuje Waszej pomocy,musze z tych dwoch metod utworzyc jedna ale w tej drugiej ten foreach mi przeszkadza troche i nie wiem jak to do konca zrobic.

Kopiuj
public IEnumerable<string> Get(string publikator,string rok,string numer,string str,string dodatek)
        {
            bool czyAkt = CzyAkt(publikator);
            DataContext db = new DataContext();            
            var doki = from d in db.Doks
                    where
                    d.P180.Substring(0, 3) == publikator                     
                    && d.Zeszyt.P110 == rok &&
                    d.Zeszyt.ZeszytP112s.Select(p => p.P112).Contains(numer) &&                           
                    d.Zeszyt.Nazwa.Substring(13,3) == dodatek
                    select d;
            if (czyAkt)
            {
                doki = from d in doki
                       where d.Pozycja == str
                       select d;
            }
            else
            {
                doki = from d in doki
                       where d.PozycjaBezLiter == str
                       select d;
            }

            return doki.Select(d=>d.P180);            
        }       


//////////////////////////////////////////////////////////////////////////////////////////////////////////
public void Update(string publikator, string rok, string numer, string str, string dodatek)
        {
            bool czyAkt = CzyAkt(publikator);
            DataContext db = new DataContext();
            var doki = from d in db.Doks
                       where
                       d.P180.Substring(0, 3) == publikator
                       && d.Zeszyt.P110 == rok &&
                       d.Zeszyt.ZeszytP112s.Select(p => p.P112).Contains(numer) &&
                       d.Zeszyt.Nazwa.Substring(13, 3) == dodatek
                       select d;
            if (czyAkt)
            {
                doki = from d in doki
                       where d.Pozycja == str
                       select d;
            }
            else
            {
                doki = from d in doki
                       where d.PozycjaBezLiter == str
                       select d;
            }
           
            foreach (var s in doki)
            {
                s.Status = Model.DokStatus.US;
            }                       
            db.SubmitChanges();          
        } 
edytowany 1x, ostatnio: madmike
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:16 dni
  • Lokalizacja:Warszawa
  • Postów:1454
0

Zapisz tą Update tak:
public void Update(string publikator, string rok, string numer, string str, string dodatek)

Kopiuj
{
  Get(publikator,rok,numer,str,dodatek);
  foreach (var s in doki)
  {
     s.Status = Model.DokStatus.US;
  } 
  db.SubmitChanges();          
} 

"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB
Wronq
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 10 lat
0
Kopiuj
public IEnumerable<string> GetAndUpdate(string publikator,string rok,string numer,string str,string dodatek)
        {
            bool czyAkt = CzyAkt(publikator);
            DataContext db = new DataContext();            
            var doki = from d in db.Doks
                    where
                    d.P180.Substring(0, 3) == publikator                     
                    && d.Zeszyt.P110 == rok &&
                    d.Zeszyt.ZeszytP112s.Select(p => p.P112).Contains(numer) &&                           
                    d.Zeszyt.Nazwa.Substring(13,3) == dodatek
                    select d;
            if (czyAkt)
            {
                doki = from d in doki
                       where d.Pozycja == str
                       select d;
            }
            else
            {
                doki = from d in doki
                       where d.PozycjaBezLiter == str
                       select d;
            }

            foreach (var s in doki)
            {
                s.Status = Model.DokStatus.US;
            }
                       
            db.SubmitChanges();  
   
            return doki.Select(d=>d.P180);            
        }       

O to chodzi? Jeśli tak to nic w tym trudnego nie ma...


Some people see things as they are, and say "why?". I dream things that never were and say "why not?".
ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 11 godzin
0

btw new DataContext() złap sobie w using, bo inaczej gubisz zasoby (połączenia z bazą)


0

Bardziej chcialem cos takiego:

Kopiuj
public jakisTyp Wspolna()
{
            bool czyAkt = CzyAkt(publikator);
            DataContext db = new DataContext();            
            var doki = from d in db.Doks
                    where
                    d.P180.Substring(0, 3) == publikator                     
                    && d.Zeszyt.P110 == rok &&
                    d.Zeszyt.ZeszytP112s.Select(p => p.P112).Contains(numer) &&                           
                    d.Zeszyt.Nazwa.Substring(13,3) == dodatek
                    select d;
            if (czyAkt)
            {
                doki = from d in doki
                       where d.Pozycja == str
                       select d;
            }
            else
            {
                doki = from d in doki
                       where d.PozycjaBezLiter == str
                       select d;
            }
} 

Tutaj druga z forachem

Kopiuj
public typ Zforeachem()
{
       Wspolna();
//tutaj jakos ten foreach 
db.savechanges();
} 

Tutaj nastepna:

Kopiuj
public typ Nastepna()
{
        Wspolna();
         return doki.Select(d=>d.P180);  
} 

Tak mniej wiecej zeby czesc wspolna sie nie powtarzala w 2 miejscach.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.