var totals = new {
totalVirtualMemory = (from p in Process.GetProcesses() select p.VirtualMemorySize64).Sum(),
totalWorkingSet = (from p in Process.GetProcesses() select p.WorkingSet64).Sum() };
var processes = (from p in Process.GetProcesses() select new { p.VirtualMemorySize64, p.WorkingSet64 } ).ToList();
var totals2 = new { totalVirtualMemory = (from p in processes select p.VirtualMemorySize64).Sum(),
totalWorkingSet = (from p in processes select p.WorkingSet64).Sum()
};
public static ProcessTotals Sum(this IEnumerable source) {
var totals = new ProcessTotals();
foreach (var p in source){
totals.VirtualMemorySize64 += p.VirtualMemorySize64;
totals.WorkingSet64 += p.WorkingSet64;
}
return totals;
}
public class ProcessTotals {
public long VirtualMemorySize64 { get; set; }
public long WorkingSet64 { get; set; }
}
var totals3 = (from p in Process.GetProcesses() select p).Sum();
开发者在Visual Basic中也可以这样做,但需要像下面这样做:
Dim totals3 = Aggregate p In Process.GetProcesses _
Into virtualMemory = Sum(p.VirtualMemorySize64), _
workingSet = Sum(p.WorkingSet64)