从条件父ID和子ID linq C#的列表中删除
Posted
技术标签:
【中文标题】从条件父ID和子ID linq C#的列表中删除【英文标题】:Delete from list on condition parent id and child id linq C# 【发布时间】:2021-10-21 06:56:07 【问题描述】:
"companies":[
"CID":"1",
"branches":[
"BID":"1",
"stores":[
"SID":"2",
"departments":[
"DID":2
,
"DID":3
]
]
]
,
"CID":"2",
"branches":[
"BID":"1",
"stores":[
"SID":"2",
"departments":[
"DID":2
,
"DID":3
]
]
]
]
我想从 CID=2 和 BID=1 和 SID=2 的列表中删除数据。根据这三个条件数据应该被删除
userEnitityDetails.companies
.RemoveAll(C => C.branches
.Any(B => B.stores
.Any(S=> S.SID.Equals(InputStoreName))));
【问题讨论】:
恕我直言,您最好在之前和之后显示您想要的结果 【参考方案1】:您的代码不测试除 SID 之外的 ID。
我猜你想这样做?
Companies
.RemoveAll(c => c.CID == 2 && c.Branchs
.Any(b => b.BID == 1 && b.Stores
.Any(s => s.SID == 2)));
【讨论】:
没有给出错误 System.NullReferenceException: 'Object reference not set to an instance of an object.'【参考方案2】:如果companies
对象或嵌套对象可能为空,则使用:
companies?.RemoveAll(c =>
c.CId == 2 && (c.Branches?.Any(b =>
b.BId == 1 && (b.Stores?.Any(s => s.SId == 2)??false))??false));
【讨论】:
以上是关于从条件父ID和子ID linq C#的列表中删除的主要内容,如果未能解决你的问题,请参考以下文章
在 c# 中使用 linq 按钮无法从 json 中正确计算章节 ID