我有班级列表
public class V_Articles
{
public string code{ get; set; }
public string description { get; set; }
public string shortDescription { get; set; }
}
我有一个字符串变量,可以包含此属性之一的名称和正确填充的列表
字符串字段名称=“描述”(或“代码”或“短描述”)
List
list = Get_List( 填充列表 );
有没有办法制作通用的 lambda 表达式?
List
list_2 = list.Where(k=> k.#fieldName的值# == '毛巾').ToList();
这应该有效。
List<V_Articles> list_2 = list.Where(k=> k.code == 'towel' || k.description == 'towel' || k.shortDescription == 'towel').ToList();
Sandeep Bhat 的答案 可能是出于性能原因的选择,但如果您愿意,您也可以使用反射来动态解决此问题:
var propName = "code";
var list_2 = list.Where(k => k.GetProperty<string>(propName) == "towel");
public static class Extensions {
public static TProp? GetProperty<TProp>(this object obj, string prop) {
var t = obj.GetType();
var p = t.GetProperty(prop)
?? throw new MissingMemberException($"Property '{prop}' not found on type {t.FullName}.");
var v = (TProp?)p.GetValue(obj);
return v;
}
}