我试图解决问题,但现在没有成功。
我有一个包含3个字段的数据表:f1,f2,f3(字符串,字符串,双精度)。
我想编写一个linq查询,它会生成以下内容:它选择行,其中f1的任何值都不与f2值匹配。换句话说,哪些是f2值,它们不会出现在f1字段值中。
我应该如何组合where,any,contains关键字?
答案 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
函数从集合中删除空行