用linq语句替换foreach语句
本文关键字:语句 foreach 替换 linq | 更新日期: 2023-09-27 18:12:38
我正在尝试将此代码转换为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));
假设你的installeprinters实际上是一个支持adrange的集合,如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)
}
);