2012-09-02 132 views
0

在此代碼試圖通過名字 獲取過程如何我可以添加第二個過濾器來查詢IEnumerable的<Process> Linq查詢

 IEnumerable<Process> processList = 

       from p in Process.GetProcesses() 
       where p.ProcessName.StartsWith("Mon") || p.ProcessName.StartsWith("Tue") 
       select p; 

它是什麼,我試圖糾正它,上面DOWS的例子工作

+2

你的意思是你想添加更多您where子句?只需使用&&或||並不斷增加條件。 –

回答

1
IEnumerable<Process> processList = from p in Process.GetProcesses() 
       where p.ProcessName.StartsWith("Mon") && p.Property == somethingElse && ... 
       select p; 

只是加上& &如果你想AND條件或||如果你想要OR條件。 OP後

編輯點評:

如果你想訪問您的IEnumerable的元素:

var element1 = processList.ElementAt(0); 

,如果你想通過遍歷所有的元素,你可以使用foreach。

 foreach (var i in processList) 
    { 
    Response.Write(i.ProcessName); 
    //or if you're using a console application: Console.WriteLine(i.ProcessName); 
    } 
+0

什麼是ToList()以及爲什麼使用它或我們應該在哪裏。 IEnumerable不是我們可以使用的東西嗎? – LoneXcoder

+0

我以爲你有名單,而不是IEnumerable,這將需要一個.ToList()在你的查詢結束編譯。 – Thousand

+0

@Jand Doe如何訪問'IEnumerable'中的第一個'cell',在一個正常的數組中:'MyArray [0]',這裏如果我想避免foreach如何訪問p.name id。 .. – LoneXcoder

1
IEnumerable<Process> processList = 
    from p in Process.GetProcesses() 
    where p.ProcessName.StartsWith("Mon") 
    where p.ProcessName.EndsWith("day") 
    select p; 
+0

謝謝,我試過使用:where()|| ()。取而代之的是()|| () – LoneXcoder

0

我的回答是問題的任擇議定書的修正後證明擴展方法

IEnumerable<Process> processes = 
Process.GetProcesses() 
.Where(p => p.ProcessName.StartsWith("Mon") || p.ProcessName.EndsWith("Tue")); 
相關問題