2016-12-28 15 views
0

グループ内の最後のレコードを見つけるために新しい列を追加します。
Select()メソッドでサブクエリを記述できますか?
私はこのグループ内の最後のレコードを見つけるためにLinq

var test = DailyPeriods.Where(x => x.BookingDate == "2016/12/30") 
    .Select(x => 
     new 
     { 
      PERIOD_GROUP_ID = x.PeriodGroupID, 
      PERIOD_NAME = x.PeriodName, 
      New_Column = DailyPeriods 
          .Where(z => z.BookingDate == "2016/12/30") 
          .Select(a => 
           new 
           { 
            PeriodGroupID = a.PeriodGroupID, 
            period_name = a.PeriodName 
           } 
          ) 
          .GroupBy(b => b.period_name) 
          .Select(g => g.Last().PeriodGroupID) 
          .Contains(x.PeriodName) 
     }) 

を試してみましたが、
このエラーが発生します "スコープの列ではない:A:2211708.C(BOOKING_DATE)"

enter image description here

+0

質問には2つの質問があります。どちらが問題を解決していますか?詳しく教えてください。 – DarkKnight

+0

私は次の画像の結果を作りたいです。私はSelect()メソッドでサブクエリしようとしましたが、招待しました。 –

+0

最後のレコードを定義します。どの列に基づいて最後のレコードを特定しますか? – DarkKnight

答えて

1

はこれを試してみてください。..

var lastRecords = periodList.GroupBy(l => l.PeriodName) 
          .Select(x => new { PeriodName = x.Key, 
               PeriodGroupId = x.OrderBy(l => l.PeriodGroupId).Last().PeriodGroupId}); 

var result = from period in periodList 
      from lastRec in lastRecords.Where(r => r.PeriodGroupId == period.PeriodGroupId 
                && r.PeriodName == period.PeriodName) 
             .DefaultIfEmpty() 
      select new { period.PeriodGroupId,period.PeriodName, New_Column=lastRec==null?false:true }; 
+0

ありがとうございました、私はこの解決策については見ていませんでした –

+0

@YichLin:乾杯! – DarkKnight

関連する問題