什么是Vq.Net中的IF条件的等效Linq?

时间:2014-09-02 19:16:01

标签: .net vb.net

我有以下代码,其中包含普通的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

3 个答案:

答案 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(恕我直言)中相当丑陋。