2017-10-18 27 views
1

在我的项目中,我组织细胞(TextBlock控件,在我的情况)到名为框的列表。每个盒子有9个单元。有没有办法比较这些列表中的所有单元格元素,并且如果的任何与我指定的任何表达式匹配,则返回true?对于我在迭代单元格列表时进行的每次比较,我需要确保给定单元格在进行比较时不会考虑自己。这样,它理所当然地不会考虑它自己的价值,因此我试图在下面写出lambda表达式。我知道First()和Single()返回单个元素,所以我怀疑这是我的lambda导致的问题。我使用下面的代码:Linq方式来检查是否有其他元素匹配表达式,而跳过自己

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语句往往比它应该和我仍然在同越来越细胞之间是相同的。文本值框。

+1

你的规范是非常不清楚。 “...比较列表中的所有元素...”任何列表?或你的箱子清单?或者可能是我们还不知道那是List的单元集合? “...匹配表达式......”哪个表达式?任何表情? “...为细胞本身做出例外......”表达式是否提及细胞作为输入? “它不计算如果Text.Value ==本身”,如果它本身是一个单元格,这是否意味着Text.Value也是一个单元格?请重新考虑编写适当的规格 –

+0

@HaraldCoppoolse谢谢,我已经编辑了初始文章,以便更清楚。就目前而言,Juharr的回答足以满足我的需求,但任何其他想法总是受欢迎的。如果我需要进一步澄清,请告诉我 –

回答

2

您可以像这样使用Any。这将告诉你,如果盒子包含相同Text有价值的东西,但它是不一样的项目作为cell(比如通过参考,但要看是什么cell是)

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