对LINQ语句进行逆向工程

本文关键字:逆向工程 语句 LINQ | 更新日期: 2023-09-27 18:00:44

我正在尝试对LINQ语句进行逆向工程,如有任何帮助,我们将不胜感激。

bool isAllUnchecked = !lvTech.Items.Cast<ListViewItem>().Any(lvItem => lvItem.Checked);

到目前为止我的进步;

bool isAllUnchecked = true;
foreach(ListviewItem item in lvTech.Items)
{
    if(item.checked)
    {
      isAllUnchecked = false;
    }
}

我正在使用Resharper,它的"转换为LINQ"到目前为止还没有出现。我错过了什么?

对LINQ语句进行逆向工程

我认为应该是:

bool isAllUnchecked = false; // Variable name doesn't fit what you're doing
                             // Don't forget to change.
foreach(ListViewItem item in lvTech.Items)
{
    if(item.checked)
    {
      isAllUnchecked = true;
      break;
    }
}

Any()检查是否有满足条件的项,如果有,则返回true

您应该重命名您的变量isAnyChecked,或者您应该否定查询的结果。

这将是正确的循环(至少这是变量名称所暗示的):

bool isAllUnchecked = true;
foreach(ListviewItem item in lvTech.Items)
{
    if(item.checked)
    {
      isAllUnchecked = false;
      break;
    }
}

这与LINQ:相同

bool isAllUnchecked = lvTech.Items.Cast<ListViewItem>()
                                  .All(lvItem => !lvItem.Checked);