2015-06-14 48 views
0

我試圖解決一個問題,但現在沒有成功。LINQ到數據集包含或任何

我有一個數據表有3個字段:f1,f2,f3(字符串,字符串,雙)。

我想寫一個linq查詢,它會產生以下結果:它選擇行,其中f1的任何值與f2值都不匹配。換句話說,哪些是f2值,哪些不會在f1字段值中出現。

我應該如何結合where,any,包含關鍵字?

+0

正如我寫的,我試圖做一個LINQ查詢。我的對象/集合是Datatable.AsEnumerable。 – derstauner

回答

0

嘗試使用LINQ擴展函數GroupJoin

Dim dt As DataTable 'Your datatable 
Dim uusi As IEnumerable(Of DataRow) = dt.AsEnumerable() _ 
      .GroupJoin(Of DataRow, String, DataRow)(dt.AsEnumerable(), 
       Function(dr) dr.Field(Of String)("f1"), 
       Function(dr) dr.Field(Of String)("f2"), 
       Function(row, matched) 
        If matched.Count > 0 Then 
         Return Nothing 
        End If 
        Return row 
       End Function) _ 
      .Where(Function(row) row IsNot Nothing) 

GroupJoin方法會發現由下式給出的值匹配的行(lambda表達式中的第二和第三個參數)
然後最後一個參數是λ-這創造結果收集/方法,
我們檢查匹配行的集合是否爲空
Where函數刪除集合中的空行