gpt4 book ai didi

c# - 检查可为空的 bool 值是否具有值以及列表中的所有值是否相等

转载 作者:行者123 更新时间:2023-12-01 18:42:32 25 4
gpt4 key购买 nike

我在列表中有一个对象的可为空的 bool 属性,我想检查所有对象是否相等并返回它的值,如果有一个值不相等则返回 null。

例如

Object1
string Name
bool? NullBool

对象 1 在列表中,例如List<Object1>我只需要检查并返回 NullBool使用 Linq

我想做类似的事情

bool? returnVal = <my Linq / Function to get what I want>

最佳答案

不漂亮,但是:

IEnumerable<Object1> objects = ...

var firstTwoDistinctValues = objects.Select(o => o.NullBool)
.Distinct()
.Take(2) // Early exit
.ToList();

var result = firstTwoDistinctValues.Count == 2
? null : firstTwoDistinctValues.SingleOrDefault();

现在这非常有效,因为:

  • 无需多次枚举源集合即可工作。当源是列表时,这不是什么大问题,但如果源是昂贵/不确定的查询,这可能很重要。
  • 如果不只是唯一值,它会提前退出。

此外,当 source-collection 为空时它会正常工作。

对于列表,您还可以高效地执行以下操作:

IList<Object1> objects = ...

var firstNullBool = objects.Select(o => o.NullBool).FirstOrDefault();
var result = objects.All(o => o.NullBool == firstNullBool) ? firstNullBool : null;

关于c# - 检查可为空的 bool 值是否具有值以及列表中的所有值是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8983088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com