0
我確實有兩個相同用戶定義類型的列表。每個包含:ID,TimesTested,varA,varB。用LINQ刪除'多列'列表的重複項目
該列表需要加入,然後保存到本地文件。重複的條目需要刪除。
問題是我不能只搜索ID並檢查它是否已經存在,因爲我總是需要保留'TimesTested'具有較高值的條目。
我真的不想循環通過兩個列表,並返回並手動檢查值。所以我在想LINQ。
是否有可能做到以下幾點,如果我已經給:
4, 16, X, Y
4, 19, X, Y
只保持第二排? (使用LINQ,或以另一種'聰明'方式)
如果是的話,可以請你解釋一下嗎?
奇怪的是,它工作時,我第一次從本地文件加載值。 也是第一儲蓄似乎工作順利......但是當我嘗試第二次寫列表文件..我得到以下錯誤:
Unable to cast object of type "WhereSelectEnumerableIterator`2[System.Linq.IGrouping`2[System.Int32,mcq_gui.clsEvaluation+History+EvaluationQuestionData],mcq_gui.clsEvaluation+History+EvaluationQuestionData]" to type Typ "System.Collections.Generic.List`1[mcq_gui.clsEvaluation+History+EvaluationQuestionData]"
這是我使用的代碼:
Friend Shared Function GetNewerEvalQs(list1 As List(Of EvaluationQuestionData), list2 As List(Of EvaluationQuestionData)) As List(Of EvaluationQuestionData)
Dim uniques As New List(Of EvaluationQuestionData)
Try
If list1.Count > 0 And list2.Count > 0 Then
uniques = list1.Concat(list2).GroupBy(Function(t) t.ID).[Select](Function(g) g.OrderByDescending(Function(t) t.TimesTested).First())
Else
If list1.Count > 0 Then
Return list1
ElseIf list2.Count > 0 Then
Return list2
Else
Return Nothing
End If
End If
Return uniques
Catch ex As Exception
Debug.Print(ex.Message)
Return Nothing
End Try
End Function