0

テーブル構造は次のようになります。

appointmentID    

1abc   --------------->1              
1abc (latest)  ------------>2            
1hjt               
990aa             
990aa              
990aa (latest             

DateTime start = DateTime.Now.AddDays(0);
DateTime end = DateTime.Now.AddDays(7));

List<JobCustomers> appointments = objectContext.JobCustomers.Where(
                    a => a.StartTime >= start && a.EndTime <= end && !string.IsNullOrEmpty(a.AppointmentId)).ToList();   

foreach (JobCustomers appointmentItem in appointments) {
    // HERE I WANT TO WRITE SOME CODE
    -- WHEN WE ARE INSERTING NEW RECORD OF A SAME ID EX "1abc" IT MUST 
    COMPARE WITH LATEST RECORD "-----2> 
}

私の要件: 同じ ID の行が複数ある場合は、以下のような予定 ID で最新のレコードを取得する必要があります

List<JobCustomers> appointments = objectContext.JobCustomers.Where(
                    a => a.StartTime >= start && a.EndTime <= end && !string.IsNullOrEmpty(a.AppointmentId).**take(0**)).ToList();

簡単に言えば、同じIDを持つ新しいレコードを挿入するときにLINQを使用して、最後に挿入されたレコードと比較する必要があります

4

3 に答える 3

0

私がこれを正しく読んでいる場合は、取得されているのと同じ ID を持つ最新のレコードを具体的に取得しようとしています。これは、LINQ の LastOrDefault 拡張メソッドで行う必要があります。

//Variable 'yourNewRecord' is what you're about to enter into the database
var latestAppt = objectContext.JobCustomers
                              .LastOrDefault(a => a.StartTime >= start && 
                                                  a.EndTime <= end &&
                                                  a.AppointmentID.Equals(yourNewRecord.AppointmentID)

編集: LastOrDefault の詳細については、こちらの MSDN リンクを参照してください

于 2012-12-31T21:41:47.960 に答える
0

LINQ も SQL も、データを挿入する順序を認識していません。この順序を保存するには、追加のフィールドが必要です (日付または自動数値の可能性があります)。それを取得したら、次を使用できるようになります。

YourList.OrderBy(i => i.Id).ThenByDescending(i => i.YourColumnToSaveOrder)
于 2012-12-30T02:44:33.330 に答える
0
var latestAppts = appointments.GroupBy(x => x.AppointmentId)
                              .Select(g => g.Last());
于 2012-12-30T15:17:54.320 に答える