Linq方法检查是否有任何其他元素在跳过自身时匹配表达式

时间:2017-10-18 16:52:43

标签: c# list linq lambda

在我的项目中,我将单元格(TextBlock控件,在我的例子中)组织成名为boxes的列表。每个盒子有9个细胞。有没有办法比较这些列表中的所有单元格元素,如果任何它们与我指定的表达式匹配,则返回true?对于我在迭代单元格列表时所做的每个比较,我需要确保给定的单元格在进行比较时不会考虑自己。这样,它理所当然地不会考虑它自己的值,因此我尝试在下面写的lambda语句。我知道First()和Single()返回单个元素,所以我怀疑是我的lambda引起了问题。我正在使用以下代码:

while (cell.Text == box.SkipWhile(e => e == cell).First().Text)
{
    // change cell.Text's value here as long as any other cell's
    // .Text value is the same
}

即使这个编译,踩过代码似乎更频繁地跳过while语句,而且我仍然在同一个框中的单元格之间获得相同的.Text值。

1 个答案:

答案 0 :(得分:2)

您可以像这样使用Any。这会告诉您框中是否包含具有相同Text值的内容,但它与cell相同的项目(可能是参考,但这取决于cell是)

if(box.Any(e => e.Text == cell.Text && e != cell)){
    cell.Text = somethingDifferent;
}