使用Linq过滤复杂对象

时间:2015-01-27 17:09:14

标签: c# linq nested-generics

我需要根据这个复杂的对象过滤IEnumerable列表。我需要在其中一个嵌套字典元素上执行比较运算符。现在我在父对象上有一个where子句。如何构造linq扩展方法来过滤内部词典中的一个关键元素?

/* Object */
public class AuditData
{
    public string Agent { get; set; }
    public AuditDataAction Action { get; set; }
}
/* Inner Object */
public class AuditDataAction
{
    public AuditDataAction()
    {
        Data = new List<Dictionary<string, Dictionary<string, object>>>();
    }
    public IList<Dictionary<string, Dictionary<string, object>>> Data { get; set; }
}

/* Code */
var myData =
    auditRepository.GetAuditEntriesFor(new AuditData {Rim = rimNo})
        .Where(d => d.Action.Adjent == "111").ToList();

1 个答案:

答案 0 :(得分:0)

要配对IEnumerable中的项目,我需要查看其中一个词典中的数据,看看是否存在密钥才能做出此决定。这是一个说明数据结构外观的声明。如果KeyOfInterest存在,我希望保留list元素。

auditData.Action.Data = 
new List<Dictionary<string, Dictionary<string, object>>>
{
    new Dictionary<string, Dictionary<string, object>>
    {
        {
            "KeyOfInterest", new Dictionary<string, object>
            {
                {"Key1", value1},
                {"Key2", value2}
            }
        }
    }
};