public List <Beleg> GetBelegByQueryData(BelegQueryData queryData, bool includeBelegPosition, bool includePayment)
        {
            List <Beleg> wrkList = new List <Beleg>();

            using (DbCommand cmd = myRepoFactory.CreateCommand()) {
                cmd.CommandText = "select * from Beleg ";
                List <string> whereConditions = genereateConditions(queryData, cmd);
                if (whereConditions.Count > 0)
                {
                    string condCombined = whereConditions.Select(w => w).Aggregate((s1, s2) => s1 + " and " + s2);
                    cmd.CommandText += "where " + condCombined;
                }
                using (DbDataReader dbDr = cmd.ExecuteReader()) {
                    while (dbDr.Read())
                    {
                        Beleg b = new Beleg();
                        b.FillEntityWithDataReader(dbDr);
                        if (includeBelegPosition)
                        {
                            FindBelegPositionenByBelegId(b.BelegId).ForEach(p => b.Positionen.Add(p));
                        }
                        if (includePayment)
                        {
                            FindBelegZahlungByBelegId(b.BelegId).ForEach(z => b.Zahlungen.Add(z));
                        }
                        wrkList.Add(b);
                    }
                }
            }

            return(wrkList);
        }
        private List <string> genereateConditions(BelegQueryData queryData, DbCommand cmd)
        {
            List <string> cond = new List <string>();

            if (queryData.VonDatum != null)
            {
                string par = "@VonDatum";
                cond.Add(string.Format("BelegDatum >= {0}", par));
                cmd.AddCmdParameter(typeof(DateTime), ParameterDirection.Input, par, (DateTime)queryData.VonDatum);
            }
            if (queryData.BisDatum != null)
            {
                string par = "@BisDatum";
                cond.Add(string.Format("BelegDatum <= {0}", par));
                cmd.AddCmdParameter(typeof(DateTime), ParameterDirection.Input, par, (DateTime)queryData.BisDatum);
            }
            if (!string.IsNullOrWhiteSpace(queryData.BelegnummerIntern))
            {
                string par = "@BelegnummerIntern";
                cond.Add(string.Format("BelegnummerIntern = {0}", par));
                cmd.AddCmdParameter(typeof(string), ParameterDirection.Input, par, queryData.BelegnummerIntern);
            }
            return(cond);
        }