比较具有布尔属性的两个通用项,如果其中任何一个返回true,则返回结果通用列表中的true

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较具有布尔属性的两个通用项,如果其中任何一个返回true,则返回结果通用列表中的true相关的知识,希望对你有一定的参考价值。

我正在尝试比较两个具有相同属性的通用项目。如果要比较的属性,在任何一个列表项true意味着返回TRUE否则为FALSE我是新来的c#所以无法在这里发布代码抱歉给您带来不便。项目1和项目2具有相同的属性,但是根据不同的情况计算:需要检查布尔属性。

public class RrmModulePermission : BaseEntity
    {

        public long Id { get; set; }
        public int? EmployeeId { get; set; }
        public int? DesignationId { get; set; }
        public int ModuleId { get; set; }
        public bool View { get; set; }
        public bool ViewAll { get; set; }
        public bool Add { get; set; }
        public bool Edit { get; set; }
        public bool Delete { get; set; }
        public bool Import { get; set; }
        public bool Export { get; set; }
        public int CreatedBy { get; set; }
        public DateTimeOffset CreatedOn { get; set; }
        public int? UpdatedBy { get; set; }
        public DateTimeOffset? UpdatedOn { get; set; }
        public virtual RrmModule Modules { get; set; }

    }


 var list3 = new RrmModulePermission();
            if (list1.View || list2.View)
            {
                list3.View = true;
            }
            if (list1.Add || list2.Add)
            {
                list3.Add = true;
            }
            if (list1.Edit || list2.Edit)
            {
                list3.Edit = true;
            }
            if(list1.Delete || list2.Delete)
            {
                list3.Delete = true;
            }
            return list3;
答案

从你提交代码的方式我建议像这样初始化list3

// if both are null, return an object with all bools as false
if (list1 == null && list2 == null)
    return new RrmModulePermission();

// if list1 is null, set all bools to false
if (list1 == null)
    list1 = new RrmModulePermission();

// if list2 is null, set all bools to false
if (list2 == null)
    list2 = new RrmModulePermission();

var list3 = new RrmModulePermission
{
    View = list1.View || list2.View,
    ViewAll = list1.ViewAll || list2.ViewAll,
    Add = list1.Add || list2.Add,
    Edit = list1.Edit || list2.Edit,
    Delete = list1.Delete || list2.Delete,
    Import = list1.Import || list2.Import,
    Export = list1.Export || list2.Export
};

return list3;

请注意,如果您将任何属性的默认值设置为true,则需要替换

new RrmModulePermission();

with(您只需要使用默认值true更改属性)

new RrmModulePermission
{
    View = false,
    ViewAll = false,
    Add = false,
    Edit = false,
    Delete = false,
    Import = false,
    Export = false
};

例如,如果只有Add默认使用true

new RrmModulePermission { Add = false };

以上是关于比较具有布尔属性的两个通用项,如果其中任何一个返回true,则返回结果通用列表中的true的主要内容,如果未能解决你的问题,请参考以下文章

如果 char(2) 的列具有两个空格的默认值,则 Linq 引用不返回任何项目

比较两个数组并返回一个新数组,其中包含仅在原始数组之一中找到的任何项目

Iterator

c++中通用文件对话框和通用项对话框的主要区别是啥?

strcmp返回值布尔类型的判断

Java过滤器不能返回布尔值[重复]。