我有这个LINQ查询,其中" new" 句子创建一个匿名类型:
var query = from x in List
select new {x.Field1, x.Field2};
如何动态构建LINQ表达式:
select new {x.Field1, x.Field2};
更多背景信息:
我们有一个List< Customer>客户拥有物业A,B,C,D,E,F,G。
我们有时只需返回一些属性:
第一次回电:
select new {x.A, x.B}
第二次回电:
select new {x.C, x.D}
返回是动态的!我在字符串数组中有属性的名称。
谢谢!
答案 0 :(得分:0)
假设您要检索的属性使用CSV。你应该能够使用它。
public static class ObjectExtensions
{
public static Dictionary<string,object> GetProperties(this object obj, string properties)
{
var propertyNames = properties.Split(',');
var result = new Dictionary<string, object>();
var type = obj.GetType();
foreach (var property in propertyNames)
{
var prop = type.GetProperty(property);
var value = prop.GetValue(obj);
result.Add(property, value);
}
return result;
}
}
它将键值对存储在字典中
用法是。
var result = list.Select(p => p.GetProperties("Field1,Field2"));
JsonSerializer.CreateDefault().Serialize(Console.Out, result);