我正在尝试弄清楚当我需要执行以下操作时,LINQ的适当约定是什么:
- 如果有项目,则逐行打印它们
- 如果没有项目,请打印
"No items"
我认为应该这样做:
if (items.Any())
{
foreach (string item in items)
{
Console.WriteLine(item);
}
}
else
{
Console.WriteLine("No items");
}
然而,这将在技术上违反多重枚举原则。不违反该原则的方法是:
bool any = false;
foreach (string item in items)
{
any = true;
Console.WriteLine(item);
}
if (!any)
{
Console.WriteLine("No items");
}
但显然,这种方法不够优雅。
.ToList()
,但说实话,我看不出你的“不够优雅”的解决方案有什么问题。 - Stephen Kennedyitems
是由数据库支持的,那么在items.Any()
返回true之后但在foreach(var item in items)
开始之前,其他人可能会删除最后一个项目。这样行吗?还是你真的需要一个在线示例来证明呢? - user743382