Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq过滤复杂对象_C#_Linq_Nested Generics - Fatal编程技术网

C# 使用Linq过滤复杂对象

C# 使用Linq过滤复杂对象,c#,linq,nested-generics,C#,Linq,Nested Generics,我需要根据这个复杂对象过滤IEnumerable列表。我需要对其中一个嵌套字典元素执行比较运算符。现在我在父对象上有一个where子句。如何构造linq扩展方法来过滤最内部字典中的一个关键元素 /* Object */ public class AuditData { public string Agent { get; set; } public AuditDataAction Action { get; set; } } /* Inner Object */ public c

我需要根据这个复杂对象过滤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();
/*对象*/
公共类审核数据
{
公共字符串代理{get;set;}
公共AuditDataAction操作{get;set;}
}
/*内部对象*/
公共类AuditDataAction
{
公共审核数据操作()
{
数据=新列表();
}
公共IList数据{get;set;}
}
/*代码*/
var myData=
GetAuditEntriesFor(新的AuditData{Rim=rimNo})
其中(d=>d.Action.adgent==“111”).ToList();

为什么要创建一个新的
AuditData
,您希望如何调用
Where
?你想做什么样的过滤?(我不得不说,字典中的字典作为价值的列表让我充满了恐惧。你可能想考虑一个中间命名集合类型来让它更清楚。)是的,我必须同意。这不是我创建的代码,但需要添加功能。我希望使用它,而不是重构所有现有的代码库。.where起作用,因为返回的是IEnumerable。“new AuditData”最终用于将参数注入SP。啊,我错过了
new AuditData{…}
末尾的
)。现在它更有意义了。但仍不清楚您试图查询的是什么。要将IEnumerable中的项配对,我需要查看其中一个字典中的数据,并查看是否存在键才能做出此决定。下面是一个说明数据结构外观的声明。如果KeyOfInterest存在,我希望保留list元素。