用包含索引必须为真的List填充布尔数组

本文关键字:List 填充 布尔 数组 真的 包含 索引 | 更新日期: 2023-09-27 18:14:57

假设我有包含索引的List<int> NullValuesIds

我如何初始化一个布尔数组分配trueNullValuesIds的索引,并使用LINQ?(布尔数组的大小已知,如size 100)。

用包含索引必须为真的List填充布尔数组

int maxIndex = NullValuesIds.Max(); // or some other maximum
var boolArray =
   Enumerable
   .Range(0, maxIndex)
   .Select(NullValuesIds.Contains)
   .ToArray();

如果性能很重要,如果NullValuesIdsHashSet<int>,这将快得多。

保持简洁(和高效):

List<int> NullValuesIds = new List<int>{1, 3, 7};
bool[] arr = new bool[100]; // all are false since a bool is a value type with default value == false
NullValuesIds.ForEach(val => arr[val] = true);

您可以排序并使用BinarySearch:

var values = NullValueIds.OrderBy(id => id).Distinct().ToList();
var boolArray = Enumerable.Range(0, 100)
                          .Select(index => values.BinarySearch(index) >= 0)
                          .ToArray();

你可以使用这个Select重载:

var result = Enumerable.Range(0,100)
             .Select((n, index) => NullValuesIds.Contains(index) ? true : false)
             .ToArray();
相关文章: