组合/合并布尔属性多个对象C#

时间:2017-06-04 13:04:29

标签: c# linq

我有大量的物体,都是相同的类型。唯一包含一个int Id属性,其余属性是布尔标志,也是一大堆。

问题:如何组合它们并使用flag[x] = true创建新对象,其中至少有一个对象具有flag[x] = true, else flag[x] = false。 (抱歉这个不好的描述,我的英语不太好......)

示例(伪代码):

lst[0] = {0815, **true**, false, false, false}

lst[1] = {0815, false, false, **true**, false}

lst[2] = {0815, false, false, false, **true**}

将导致

result = {0815, **true**, false, **true**, **true**}

我考虑过使用LINQ对Source进行分组,然后遍历这些组,手动创建新对象。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

一种解决方案可能是遍历您的集合并检查是否存在真实:

bool hasFirstPropertyTrue = false;
bool hasSecondProprertyTrue = false;
[...]
foreach(item in yourCollection)
{
hasFirstProprertyTrue |= item.FirstProperty;
hasSecondPropertyTrue |= item.SecondProperty;
[...]
}

然后hasFirstPropertyTrue,hasSecondPropertyTrue ...如果属性中至少有一个为true,则为true