2017-10-18 28 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; 
} 
相關問題