linq到数据集包含或任何

时间:2015-06-14 16:37:09

标签: vb.net linq

我试图解决问题,但现在没有成功。

我有一个包含3个字段的数据表:f1,f2,f3(字符串,字符串,双精度)。

我想编写一个linq查询,它会生成以下内容:它选择行,其中f1的任何值都不与f2值匹配。换句话说,哪些是f2值,它们不会出现在f1字段值中。

我应该如何组合where,any,contains关键字?

1 个答案:

答案 0 :(得分: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方法将按给定值(第二和第三参数中的lambdas)找到匹配的行 然后最后一个参数是lambda / method,它创建了结果集合,
在那里我们检查匹配行的集合是否为空 并且Where函数从集合中删除空行