如何使用LINQ检索对象属性?

时间:2016-06-05 18:24:58

标签: c# linq

假设我有这个对象:

public class Foo
{
     public string FirstProp {get;set;}
     public string SecondProp {get;set;}
     public string ThirdProp {get;set;}
}

现在我想从该对象中仅检索FirstProp和SecondProp,并将所有属性值连接成一个字符串。

我有一个解决方案,它不会是干净的imo。这是:

var foo = new Foo("test1","test2","test3");
var propertyNames = new[] {"FirstProp", "SecondProp"};
var properties = foo.GetType().GetProperties().Where(x => propertyNames.Contains(x.Name));
//Then loop through each retrieved property and concat the string

所以基本上我只是在寻找一个更清洁的解决方案,我不会依赖于字符串数组。

1 个答案:

答案 0 :(得分:0)

var foo = new Foo(...);
var result = string.Join(",", new[]{ foo.FirstProp, foo.SecondProp });

这样就够了吗?或者你需要反思动态类型?如果是这样,还可以提供MemberExpressions来动态获取值。你在处理一组实例吗?您是否需要在辅助方法中使用所需属性的参数提取此功能?