c# 获取所有属性值

我有一个 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

 }


慕娘9325324
浏览 114回答 2
2回答

aluckdog

如果您只需要值为 1 的属性和值,则可以将 GetValue 方法与 LINQ 结合使用:var incidentImageModel = new IncidentImageModel();PropertyInfo[] properties = incidentImageModel.GetType().GetProperties();var result = from property in properties&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;let nameAndValue = new { property.Name, Value = (int)property.GetValue(incidentImageModel) }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;where nameAndValue.Value == 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;select nameAndValue;

森栏

这是您的固定代码:PropertyInfo[] properties = incident.GetType().GetProperties();for (int i = 0; i < properties.Length; i++){&nbsp; &nbsp; var pName = properties[i].Name;&nbsp; &nbsp; var pValue = properties[i].GetValue(incident);&nbsp; &nbsp; Console.WriteLine($"{pName} = {pValue}");}

肥皂起泡泡

您可以使用 PropertyInfo.GetValue 方法:https://learn.microsoft.com/en-us/dotnet/api/system.reflection.propertyinfo.getvalue?view=netframework-4.8
打开App,查看更多内容
随时随地看视频慕课网APP