如何捕获索引位置的BOOL数组
本文关键字:BOOL 数组 位置 何捕获 索引 | 更新日期: 2023-09-27 18:17:05
我有一个Bool数组,我需要捕获元素为真的所有索引数。如何做到这一点?
这是我目前看到的
bool[] keepPageArray;
StringBuilder PageOneIndexLocation = new StringBuilder(50000);
//Assign the bool array
keepPageArray = new bool[document.Pages.Count];
// Processing is done here to give each index location value of true or false
//below is where I am having difficulty
for (int i = 0; i <= keepPageArray.Length - 1; i++)
{
if (keepPageArray[i].ToString() == "True")
{
PageOneIndexLocation.Append(i);
PageOneIndexLocation.Append(';');
}
当我运行
程序时,pagoneindexlocation的结果是这样的
- PageOneIndexLocation {0;0;1;0;1;2;0;1;2;3;0;1;2;3} System.Text.StringBuilder
我期待的是什么PageOneIndexLocation{0;1;2;4;6;7;8;10;}这里的数字表示bool数组中所有为真的位置
请告诉我哪里做错了
Replace
if (keepPageArray[i].ToString() == "True")
if (keepPageArray[i])
您可以使用Lambda query
和String.Join
方法而不使用循环,如下所示。
//Example of your bool array
bool[] keepPageArray = new bool[] {true, true, true, false, true, false, true,
true, true, false,true};
//Get the index of true values
var trues = keepPageArray.Select((b, index) => new {Index = index, Val =b})
.Where(b=> b.Val)
.Select(b=> b.Index)
.ToList();
//String concatenation using Join method
string myString = string.Join(";", trues);
//Print results
Console.WriteLine(myString);
//Results: 0;1;2;4;6;7;8;10