[英]Replacing a foreach with a linq statement
我正在嘗試將此代碼轉換為linq:
foreach (var printer in printers)
{
if (printer.Installed)
installedPrinters.Add(printer);
}
我是Linq的新手,並希望獲得有關在迭代集合時如何工作的指示。
printers.Where(printer => printer.Installed)
.ToList()
.ForEach(printer => installedPrinters.Add(printer));
請注意,需要在ForEach之前調用ToList()(請參閱使用Foreach子句的Lambda表達式 )。
還要注意,盡管這行得通,但是您的原始代碼可能更易於閱讀... LINQ很酷,但並不覺得必須將其用於所有事情:)
如果您只是嘗試創建新列表,則可以始終執行以下操作:
var installedPrinters = printers.Where(p => p.Installed).ToList();
如果要添加到列表中可能已經包含項目,則可以嘗試:
installedPrinters.AddRange(printers.Where(p => p.Installed));
假設您的installedPrinters實際上是一個支持AddRange的集合,例如List。
因此,首先使用Where
來過濾Installed == true,然后使用ForEach
對它們進行遍歷:
printers.Where(p => p.Installed).ForEach(p => installedPrinters.Add(p));
foreach (var printer in printers.Where (p => p.Installed) { installedPrinters.Add(printer); }
嘗試這個
printer.Where(x => x.Installed).ToList()
.ForEach(
p=>
{
installedPrinters.Add(p)
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.