[英]More then one mathematical operation on 2D array causes incorrect values inside 2D array
[英]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);
您的代碼中有兩個問題:
data
不是 int
的數組,而是int[]
的數組 bool
條件,並根據bool
值返回一個值。 那么x ? true : false
x ? true : false
與x
相同。 不需要操作員。 那么,什么(我假設),你要的不是檢查,如果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.