C# 使用Linq过滤复杂对象
我需要根据这个复杂对象过滤IEnumerable列表。我需要对其中一个嵌套字典元素执行比较运算符。现在我在父对象上有一个where子句。如何构造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
/* 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元素。