为了账号安全,请及时绑定邮箱和手机立即绑定

c# 获取所有属性值

c# 获取所有属性值

C#
慕娘9325324 2023-09-16 15:52:41
我有一个 IncidentImageModel 类并记录任何受伤部位。1 或零。我可以使用 Bool 来表示 true 或 false,但不知何故它就是这样。我想循环遍历每个属性,如果属性值为 1,我想将属性名称添加到字符串中。例如,头 = 1,左手 = 1,右脚 = 1。但身体其他部位的值为 0。我怎样才能得到身体部位的列表是1?public class IncidentImageModel{    [Key]    public int IncidentImageID { get; set; }    public int IncidentID { get; set; }    public int ClientID { get; set; }    public int Head { get; set; } = 0;    public int Neck { get; set; } = 0;    public int RightShoulder { get; set; } = 0;    public int LeftShoulder { get; set; } = 0;    public int Chest { get; set; } = 0;    public int RightArm { get; set; } = 0;    public int LeftArm { get; set; } = 0;    public int LowerAbdomin { get; set; } = 0;    public int RightHand { get; set; } = 0;    public int Genitals { get; set; } = 0;    public int LeftHand { get; set; } = 0;    public int LeftUperLeg { get; set; } = 0;    public int RightUperLeg { get; set; } = 0;    public int RightLowerLeg { get; set; } = 0;    public int LeftLowerLeg { get; set; } = 0;    public int RightFeet { get; set; } = 0;    public int LeftFeet { get; set; } = 0;}我知道我可以为每个身体部位做 if() 但我确信有更好的方法来做到这一点。如果有人知道该怎么做。我尝试了此操作并获取了所有属性,但无法获取属性值。 PropertyInfo[] properties =  incident.IncidentImageModels.GetType().GetProperties(); for(int i=0; i<properties.count();i++) {     properties[i].Name }
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

如果您只需要值为 1 的属性和值,则可以将 GetValue 方法与 LINQ 结合使用:


var incidentImageModel = new IncidentImageModel();

PropertyInfo[] properties = incidentImageModel.GetType().GetProperties();


var result = from property in properties

             let nameAndValue = new { property.Name, Value = (int)property.GetValue(incidentImageModel) }

             where nameAndValue.Value == 1

             select nameAndValue;


查看完整回答
反对 回复 2023-09-16
?
森栏

TA贡献1810条经验 获得超5个赞

这是您的固定代码:


PropertyInfo[] properties = incident.GetType().GetProperties();

for (int i = 0; i < properties.Length; i++)

{

    var pName = properties[i].Name;

    var pValue = properties[i].GetValue(incident);

    Console.WriteLine($"{pName} = {pValue}");

}


查看完整回答
反对 回复 2023-09-16
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

查看完整回答
反对 回复 2023-09-16
  • 2 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信