2

我正在尝试对 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”到目前为止还没有出现。我错过了什么?

4

2 回答 2

7

我认为应该是:

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或者你应该否定查询的结果。

于 2013-02-22T23:20:33.347 回答
2

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

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);
于 2013-02-22T23:24:37.713 回答