.NET:LINQ不过滤空值

时间:2018-05-11 17:04:48

标签: c# linq foreach propertyinfo

我尝试使用LINQ过滤掉_PropertInfo个对象列表的空值后运行的代码获得NULL引用异常。

错误发生在CheckAutoPatientLookupProperties方法的foreach循环中。

确切的例外情况如下:

  

未处理的类型' System.NullReferenceException'   发生在InterfacePatientAutoMatch.exe

中      

附加信息:对象引用未设置为的实例   对象

AutoPatientLookup APIParameters = new AutoPatientLookup();

//to be used only for testing
APIParameters = InitializeTestPatientInfo();
CheckAutoPatientLookupProperties(APIParameters);

public static AutoPatientLookup InitializeTestPatientInfo(bool SSN = false, bool PatientNumber = false, bool Gender = false)
{
    AutoPatientLookup TestAPIParameters = new AutoPatientLookup();
    TestAPIParameters.FirstName = "First";
    TestAPIParameters.LastName = "Last";
    TestAPIParameters.DOB = "4/9/1953";
    if (SSN)
    {
        TestAPIParameters.SSN = 00000000;
    }
    if (PatientNumber)
    {
        TestAPIParameters.PatientNumber = 000;
    }
    if (Gender)
    {
        TestAPIParameters.Gender = "F";
    }

    return TestAPIParameters;
}

public static void CheckAutoPatientLookupProperties(AutoPatientLookup TestObj)
{

    foreach (_PropertyInfo Property in TestObj.GetType().GetProperties().Where(Property => Property != null))
    {
        Console.WriteLine("AutoPatientLookup Instance Property {0} = {1}", Property.Name, Property.GetValue(TestObj,null).ToString());
    }

    Console.ReadKey();
}

public class AutoPatientLookup
{
    public string DOB { get; set; }
    public string Gender { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int PatientNumber { get; set; }
    public int SSN { get; set; }
}

通过在调试时将鼠标悬停在Property.GetValue(TestObj,null)上,当方法循环使用不在InitializeTestPatientInfo方法中初始化的Gender属性时,我发现它为null。

在概述我的foreach循环时,我的LINQ表达式是否有问题?难道它不会跳过性别财产吗?我没有得到任何编译时错误,所以我认为我的表达是合法的,但它没有被尊重。

任何帮助表示感谢。

0 个答案:

没有答案