比较具有布尔属性的两个通用项,如果其中任何一个返回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 引用不返回任何项目