我有一個包含多個屬性的對象列表。這是對象。根據分組刪除除列表中的所有對象
public class DataPoint
{
private readonly string uniqueId;
public DataPoint(string uid)
{
this.uniqueId = uid;
}
public string UniqueId
{
get
{
return this.uniqueId;
}
}
public string ScannerID { get; set; }
public DateTime ScanDate { get; set; }
}
現在在我的代碼中,我有一個巨大的這些列表,幾百或幾千。
每個數據點對象都屬於某種類型的掃描儀,並且具有掃描日期。我想刪除在同一天掃描的任何數據點,但給定機器的最後一個數據點除外。
我嘗試使用LINQ如下,但沒有奏效。我仍然有很多重複的數據點。
this.allData = this.allData.GroupBy(g => g.ScannerID)
.Select(s => s.OrderByDescending(o => o.ScanDate))
.First()
.ToList();`
我需要用掃描儀ID對數據點進行分組,因爲可能有同一天在不同機器上掃描的數據點。如果有多個,我只需要一天中的最後一個數據點。
編輯說明 - 上一個數據點是指給定機器的給定掃描日期的最後掃描數據點。我希望有所幫助。因此,當按掃描儀ID進行分組時,我試圖按掃描日期排序,然後只保留多次掃描的最後掃描日期。
這裏是2個機一些測試數據:
Unique ID Scanner ID Scan Date
A1JN221169H07 49374 2003-02-21 15:12:53.000
A1JN22116BK08 49374 2003-02-21 15:14:08.000
A1JN22116DN09 49374 2003-02-21 15:15:23.000
A1JN22116FP0A 49374 2003-02-21 15:16:37.000
A1JOA050U900J 80354 2004-10-05 10:53:24.000
A1JOA050UB30K 80354 2004-10-05 10:54:39.000
A1JOA050UD60L 80354 2004-10-05 10:55:54.000
A1JOA050UF80M 80354 2004-10-05 10:57:08.000
A1JOA0600O202 80354 2004-10-06 08:38:26.000
你知道你可以做一個只讀自動屬性並擺脫後臺字段'公共字符串UniqueId {獲取;私人設置; }'。 – juharr
您還應該獲得該測試數據的預期結果。 – juharr