2015-06-14 40 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函数删除集合中的空行