2010-01-12 56 views
1
 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; 

此代码返回是这样的:LINQ选择问题(不同的)

  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 

问题解决

+0

你确定你的j的行是(在他们的所有字段)实际上不同?您可能需要投射出j.ID,j.SomethingElse,以获得你想要“独特”的领域。 – Paddy 2010-01-12 14:00:51

+0

我需要不同的br_indexa,但不知道如何 – Ognjen 2010-01-12 14:07:51

回答

4

在您的查询,您可以选择您想在选择不同的列:

var prisustvo = (from j in data_context.nastava_prisustvos 
        select j.br_indexa).Distinct(); 
+0

我更新了代码并写入了新问题 – Ognjen 2010-01-12 17:25:39

1

尝试增加你的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。

+0

我在发布的代码中如何使用它 – Ognjen 2010-01-12 14:20:39

+0

在与设计器相同的项目中添加一个名为NastavaIzvjestaj.cs的新类;每个LINQ对象都是一个部分类,partial关键字允许您对类定义进行“附加”操作。 命名空间...意味着我不知道LINQ to SQL orm在哪个命名空间中,因此在那里提供了相同的命名空间。 – 2010-01-12 16:41:59