2014-09-02 65 views
0

我有一個普通的If條件和運算符下面的代碼。我正在查看是否有一個等效的Linq代碼來處理If條件?如果是這樣,在這種情況下哪個Linq運營商是合適的?謝謝!什麼是Vb.Net中IF條件的等價Linq Where代碼?

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

我沒有看到任何與Linq相關的代碼。 – 2014-09-02 19:18:38

回答

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() 
+0

是否有可能在單個項目上應用WHERE?因爲我只查看一個MemberInfo類型的項目,並檢查它的Name屬性是否不等於特定值。謝謝! – Jyina 2014-09-02 19:45:42

+0

我不知道爲什麼你需要,但你總是可以這樣做:) lstItems = {member} .Where(Function(item)item.Name <>「Person」and item.Name <>「Balance」 item.Name <>「Links」)。ToList() – 2014-09-02 19:50:09

1

你應該使用Where

lstItems = members 
    .Where(m => m.Name <> "Person" && m.Name <> "Balance" && m.Name <> "Links") 
    .Select(m => m.Name) 
    .ToList(); 

我以爲members是要過濾原始集合。

我使用C#語法,因爲我更熟悉它。你應該能夠將其轉換爲VB。

+0

我想他是要求一個VB解決方案;) – 2014-09-02 19:21:24

+0

偉大的,現在沒有人會投票我的答案... – 2014-09-02 19:25:03

1

做到這一點在VB中是使用查詢語法,而不是方法鏈的慣用方式。

E.g.

lstItems = From member In members 
       Where member.Name <> "Person" _ 
       And member.Name <> "Balance" _ 
       And member.Name <> "Links" _ 
       Select member 

其他答案也是正確的,但他們正在使用方法鏈。在VB(恕我直言)方法鏈接是相當醜陋的。

+0

我使用方法鏈接的原因是使用ToList()方法實現集合。我真的不喜歡「選擇成員」:) – 2014-09-02 19:47:13