用包含索引必须为真的List填充布尔数组
本文关键字:List 填充 布尔 数组 真的 包含 索引 | 更新日期: 2023-09-27 18:14:57
假设我有包含索引的List<int> NullValuesIds
我如何初始化一个布尔数组分配true
从NullValuesIds
的索引,并使用LINQ?(布尔数组的大小已知,如size 100)。
int maxIndex = NullValuesIds.Max(); // or some other maximum
var boolArray =
Enumerable
.Range(0, maxIndex)
.Select(NullValuesIds.Contains)
.ToArray();
如果性能很重要,如果NullValuesIds
是HashSet<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();