例如:
{1, 1, 11, 1111, 1111111}
此数组有效,因为每个元素仅使用数字 1。
{11, 101, 1111, 11111}
此数组无效,因为每个元素都使用 0 和 1 位数字。
你可以尝试这样的事情:
var isValid = arr
.Select(a => a.ToString()) //Call .ToString() on each integer
.SelectMany(a => a) //Select each character in the string and flatten
.Distinct() //Get only the unique characters
.Count() <= 1; //If there are more than 1 unique characters, it's invalid.
试试这个:
var allSame = source.SelectMany(n => n.ToString()).Distinct().Count() == 1;
这将为您的两个输入提供正确的结果。
解决方案 1
无效= {111,222, 333}, {111, 110, 101}.有效 = {111, 111}, {222, 222}
char c = arr[0].ToString()[0]; //get the first digit to compare
//char c = arr.First().ToString().First()
bool isValid = arr
.SelectMany(i => i.ToString()) //select all digits as chars
.All(s => s == c); //compare them to the c char
仅使用 LINQ(性能不佳)
bool isValid = arr
.SelectMany(i => i.ToString()) //select all digits as chars
.All(s => s == arr.First().ToString().First()); //compare them to the c char
第二个示例将为Array
的每个数字创建一个IEnumerable<Char>
(性能不佳)
解决方案 2
无效= {111, 110, 101}。有效 = {111, 111}, {222, 222}, {111, 222, 333}
bool isValid = arr
.SelectMany(i => i.ToString())
.Distinct()
.Count() == 1