проблема выбора linq (отличная) - PullRequest
1 голос
/ 12 января 2010
        List<NastavaIzvjestaj> nastava_izvjestaj = new List<NastavaIzvjestaj>();
        var data_context = new DataEvidencijaDataContext();
        int pomSum = 0;

        var prisustvo = (from j in data_context.nastava_prisustvos 
                select j.br_indexa).Distinct();
        var lista = prisustvo.ToList();

        foreach (var i in prisustvo)
        {
            var pom = from k in data_context.nastava_prisustvos

                      where k.br_indexa == i
                      select k.broj_casova;

            pomSum = pom.Sum();

            nastava_izvjestaj.Add(new NastavaIzvjestaj
            {
                br_indexa = i.br_indexa,
                naziv = "mjau",
                ime = "First Name",
                prezime = "Last Name",
                tip_nastave = "XXX",
                procenat_prisustva =pomSum
            });
        }

            string reportPath = Server.MapPath("NastavaPrikaz.rpt");

            ObjektniNastavaIzvjestaj = new ReportDocument();
            ObjektniNastavaIzvjestaj.Load(reportPath);
            ObjektniNastavaIzvjestaj.SetDataSource(nastava_izvjestaj);
            CrystalReportViewer1.ReportSource = ObjektniNastavaIzvjestaj;

Этот код возвращает что-то вроде этого:

           Br_idexa        Ime          Prezime         Procenat

           185             First Name   Last Name           30
           185             First Name   Last Name           30
           185             First Name   Last Name           30
           185             First Name   Last Name           30

Как получить только одну строку:

           185             First Name   Last Name           30

проблема решена

Ответы [ 2 ]

4 голосов
/ 12 января 2010

В своем запросе вы можете выбрать, в каком столбце вы хотите выбрать отдельный:

var prisustvo = (from j in data_context.nastava_prisustvos 
                    select j.br_indexa).Distinct();
1 голос
/ 12 января 2010

Попробуйте добавить частичный класс для вашего NastavaIzvjestaj, который делает:

namespace ...
public partial class NastavaIzvjestaj
{
   public override bool Equals(object o)
   {
      if (o == null || !(o is NastavaIzvjestaj))
         return false;

      return this.Br_idexa == o.Br_idexa;
   }

   public override int GetHashCode()
   {
      return this.Br_idexa.GetHashCode();
   }
}

При условии, что Br_idexa является вашим уникальным идентификатором и pk.

...