我有一个从集合中搜索的谓词,我想检查我的类属性是否不在对象中然后我想返回空,即#34;"不是空的。
Func<IModel, string> predicateField03 = s => s.GetType().GetProperty("Field03") != null && s.Field03.ToLower().Contains(filter.ToLower()) ? s.Field03.ToLower() : string.Empty;
以上查询在对象中返回为 Field03 = null ,但我希望结果如 Field03 =&#34;&#34; 如果我做错了,请更正。
答案 0 :(得分:0)
我认为有一个问题是您要检查IModel是否具有某些属性,然后您尝试访问该属性,就像它是IModel的一部分一样,因此它不会对我有意义。
您也可以尝试使用反射来获取值:
public class Program
{
public interface IModel {}
public class Model1 : IModel{}
public class Model2 : IModel {
public string Field03 {get;set;}
}
public static void Main()
{
Func<IModel, string> predicateField03 = s => s.GetType().GetProperty("Field03") != null && s.GetType().GetProperty("Field03").GetValue(s).ToString().ToLower().Contains("33") ?
s.GetType().GetProperty("Field03").GetValue(s).ToString() : string.Empty;
Console.WriteLine(predicateField03(new Model1()));
Console.WriteLine(predicateField03(new Model2(){Field03 = "333"}));
}
}