我有以下代码,其中包含普通的If条件和<>运营商。我正在寻找是否有一个等效的Linq代码如果条件?如果是这样,在这种情况下哪个Linq运算符适合?谢谢!
Dim member as System.Reflection.MemberInfo
If member.Name <> "Person" And member.Name <> "Balance" And member.Name <> "Links" Then
lstItems.Add(member.Name)
End If
答案 0 :(得分:3)
假设items
是原始集合
lstItems = items.Where(Function(member) member.Name <> "Person" And member.Name <> "Balance" And member.Name <> "Links").ToList()
实际解决方案是
lstItems = { member }.Where(Function(item) item.Name <> "Person" And item.Name <> "Balance" And item.Name <> "Links").ToList()
答案 1 :(得分:1)
您应该使用Where
:
lstItems = members
.Where(m => m.Name <> "Person" && m.Name <> "Balance" && m.Name <> "Links")
.Select(m => m.Name)
.ToList();
我认为members
是您要过滤的原始收藏品。
我使用了C#语法,因为我对它更熟悉。您应该能够将其转换为VB。
答案 2 :(得分:1)
在VB中执行此操作的惯用方法是使用查询语法而不是方法链接。
E.g。
lstItems = From member In members
Where member.Name <> "Person" _
And member.Name <> "Balance" _
And member.Name <> "Links" _
Select member
其他答案也是正确的,但他们正在使用方法链接。方法链在VB(恕我直言)中相当丑陋。