如何获取具有特定名称的所有属性并创建List <keyvaluepair <string,string>&gt; </keyvaluepair <string,string>

时间:2013-06-26 11:18:50

标签: c# linq lambda

我需要做一些以下的反思:

  1. 从对象中获取所有属性名称,并仅选择具有单词Role的那些属性。
  2. 获得所有属性后,创建一个List<KeyvaluePair<string,string>>,其中键将是属性名称,值将来自object属性。
  3. 我想这可以通过linq和/或lambda表达式轻松完成,但不知道如何。

    我到目前为止的代码是:

    SyncJobs_Result job = (SyncJobs_Result)entity.Entity;
    var properties = typeof(SyncJobs_Result ).GetProperties(BindingFlags.Static | BindingFlags.Public).Select(p => p.Name.Contains("Role"));
    

    如何构建列表&gt;出于这个?键是列或属性名称,值是属性值

1 个答案:

答案 0 :(得分:3)

SyncJobs_Result job = (SyncJobs_Result)entity.Entity;
var properties = typeof(SyncJobs_Result)
    .GetProperties(BindingFlags.Static | BindingFlags.Public)
    .Where(p => p.Name.Contains("Role") && p.PropertyType == typeof(string))
    .Select(p => new KeyValuePair<string, string>(p.Name, p.GetValue(job, null) as string))
    .ToList();

在没有Visual Studio的情况下编写,因此可能存在一两个语法错误,但希望这会指向正确的方向。