簡體   English   中英

檢查2D數組中的值

[英]Checking values inside a 2D array

我有一個二維數組int[][] data ,例如,我想查看該值是否包含值45

我創建了這一行代碼

bool contains = data.Where(x => x.Contains(45)).ToArray().Count() != 0 ? true : false;

但看起來好像有不必要的代碼,我敢肯定,有一種更簡單或更有效的方法可以做到這一點

您可以使用Any linq擴展名。

bool exists = data.SelectMany(x=>x).Any(x=>x == 45);

要么

bool exists = data.Any(x=>x.Any(s=>s == 45));

Array.IndexOf針對整數數組進行了優化,因此,如果您的內部數組很長,並且您關心將其加速的話,那么可能值得這樣做:

bool exists = data.Any(a => Array.IndexOf(a, 45) != -1);

您的代碼中有兩個問題:

  1. data 不是 int的數組,而是int[]的數組
  2. 三元運算符采用bool條件,並根據bool值返回一個值。 那么x ? true : false x ? true : falsex相同。 不需要操作員。

那么,什么(我假設),你要的不是檢查,如果data包含45 ,但如果任何在陣列中的data包含45。 因此,您可以使用SelectMany將鋸齒狀的數組展平為枚舉類型,或者將兩個Any調用合並在一起:

bool contains = data.SelectMany(d => d).Contains(45);

要么

bool contains = data.Any(d => d.Contains(45);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM