2017-11-08 16 views
1

こんにちは私は別のレコードを取得するために以下のクエリを試してみましたが、私は下のクエリから別のレコードを取得することができません。linqクエリで別のレコードを取得する方法

var query = (from sr in db.StudentRequests 
      join r in db.Registrations on sr.RegistrationId equals r.RegistrationId 
      join cc in db.Campus on r.CampusId equals cc.CampusId 
      join c in db.Classes on sr.ClassId equals c.ClassId 
      from tc in db.TutorClasses.Where(t => t.ClassId == sr.ClassId).DefaultIfEmpty() 
      from srt in db.StudentRequestTimings.Where(s => s.StudentRequestId == sr.StudentRequestId).DefaultIfEmpty() 
      from tsr in db.TutorStudentRequests.Where(t => t.StudentRequestId == srt.StudentRequestId && t.TutorId == registrationid).DefaultIfEmpty() 
      where tc.RegistrationId == registrationid 
      select new 
      { 
       StudentRequestId = sr.StudentRequestId, 
       RegistrationId = sr.RegistrationId, 
       Location = sr.Location, 
       PaymentMethod = sr.PaymentMethod, 
       CreatedOn = sr.CreatedOn, 
       ClassName = c.ClassName, 
       CampusName = cc.CampusName, 
       StatusId = tsr.StatusId == null ? 1 : tsr.StatusId, 
       Time = db.StudentRequestTimings.Where(p => p.StudentRequestId == sr.StudentRequestId) 
         .Select(p => p.FromTime.ToString().Replace("AM", "").Replace("PM", "") + "-" + p.ToTime) 
      }).Distinct().ToList().ToPagedList(page ?? 1, 3); 

しかし、私は

'明確な' 操作などのエラーを取得していますが、指定された引数のコレクション resultTypeとに適用することはできません\ rを\ nParameter名:引数

私は上記のクエリから.Distinct()を削除しました。そのコードの下にコードを書いていました

query = query.Distinct().ToList(); 

しかし、それでもまだ、重複レコードはだから私は明確なレコードを取得するには、GROUP BY句をしようとしたが、あそこにも、私はコード

以下issue.Pleaseレビューを直面しています

enter image description here

を示しました。

query = query.ToList().GroupBy(x => new { x.StudentRequestId, x.StatusId, x.Location, x.RegistrationId, x.PaymentMethod, x.CreatedOn, x.ClassName, x.CampusName}) .Select(group => new { StudentRequestId = group.Key.StudentRequestId, StatusId = group.Key.StatusId, Location = group.Key.Location, RegistrationId = group.Key.RegistrationId, PaymentMethod = group.Key.PaymentMethod, CreatedOn = group.Key.CreatedOn, ClassName = group.Key.ClassName, CampusName = group.Key.CampusName, Time1 = group.Key.Time }); 

しかし、私は enter image description here

ような時間のためのエラーを取得しています

個別の値はどのように取得できますか?私はすべてのものが正常に動作していると、その列を削除する場合 はまた、私は、クエリ

実際の問題は、時間の列から来ているにToPagedListを使用していないという懸念で行いました。

+0

... GROUPBY()を選択する(G => g.First()) .ToList()。 –

+0

@Rajajiは私のために働いてくれてありがとう。 – Xtremcool

答えて

1

@Rajajiが提案したように、クエリの最後にGroup by節を追加してくれました。代わりに、個別使用の

var query = (from sr in db.StudentRequests 
      join r in db.Registrations on sr.RegistrationId equals r.RegistrationId 
      join cc in db.Campus on r.CampusId equals cc.CampusId 
      join c in db.Classes on sr.ClassId equals c.ClassId 
      from tc in db.TutorClasses.Where(t => t.ClassId == sr.ClassId).DefaultIfEmpty() 
      from srt in db.StudentRequestTimings.Where(s => s.StudentRequestId == sr.StudentRequestId).DefaultIfEmpty() 
      from tsr in db.TutorStudentRequests.Where(t => t.StudentRequestId == srt.StudentRequestId && t.TutorId == registrationid).DefaultIfEmpty() 
      where tc.RegistrationId == registrationid 
      select new 
      { 
       StudentRequestId = sr.StudentRequestId, 
       RegistrationId = sr.RegistrationId, 
       Location = sr.Location, 
       PaymentMethod = sr.PaymentMethod, 
       CreatedOn = sr.CreatedOn, 
       ClassName = c.ClassName, 
       CampusName = cc.CampusName, 
       StatusId = tsr.StatusId == null ? 1 : tsr.StatusId, 
       Time = db.StudentRequestTimings.Where(p => p.StudentRequestId == sr.StudentRequestId).Select(p => p.FromTime.ToString().Replace("AM", "").Replace("PM", "") + "-" + p.ToTime) 
       }).ToList().GroupBy(p => new { p.StudentRequestId }).Select(g => g.First()).ToList(); 
関連する問題