0

こんにちは、グリッドビューを DB からの個別の行にバインドしようとしています。JobID 列に distict を実装したい。助けてください

using (ATPDataContext at = new ATPDataContext())

        {
            var qryPartnerJobs = (from pj in at.jobs
                                 join jq in at.job_quotes on pj.JobID equals jq.JobID
                                 join u in at.users on jq.TradeUserID equals u.UserID
                                 where pj.IsApproved == true
                                 select new 
                                 {
                                     JobID = pj.JobID,
                                     FirstName = u.FirstName,
                                     ServiceName = pj.service.ServiceName,
                                     ServiceTypeName = pj.service_type.ServiceTypeName,
                                     IsApproved = pj.IsApproved,
                                     IsActive = pj.IsActive,
                                     IsQuoted = pj.IsQuoted,
                                     IsAssigned = pj.IsAssigned,
                                     ApprovalDate = pj.ApprovalDate,
                                     Description = pj.Description
                                 }).Distinct();

            gvPartnerJob.DataSource = qryPartnerJobs;
            gvPartnerJob.DataBind();

        }
4

2 に答える 2

0

Distinctパラメータとしてa を受け入れEqualityComparer<T>ます。次の比較子を使用して、要求された機能を実装できます。

public class JobComparer : EqualityComparer<Job>
{
    public override bool Equals(Job x, Job y)
    {
        return x.JobID == y.JobID;
    }

    public override int GetHashCode(Job obj)
    {
        return obj.JobID.GetHashCode();
    }
}

この比較機能を使用するDistinct(new JobComparer())と、コレクションで簡単に使用できます。

于 2013-06-22T14:33:45.137 に答える