[英]linq selecting problem (distinct)
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;
This code return something like this: 这段代码返回如下内容:
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
How do I get only one row : 我如何只获得一行:
185 First Name Last Name 30
problem is solved 问题解决了
In your query you can select which column you want to select distinct on: 在查询中,您可以选择要在哪个列上进行选择:
var prisustvo = (from j in data_context.nastava_prisustvos
select j.br_indexa).Distinct();
Try adding a partial class for your NastavaIzvjestaj that does: 尝试为您的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();
}
}
Providing that Br_idexa is your unique identifier and pk. 假设Br_idexa是您的唯一标识符和pk。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.