C#Complex Linq-如何获取其id或子ID匹配的对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#Complex Linq-如何获取其id或子ID匹配的对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1185字,纯文字阅读大概需要2分钟。
内容图文
![C#Complex Linq-如何获取其id或子ID匹配的对象](/upload/InfoBanner/zyjiaocheng/789/ac4c839d1a51436483dd361becfe6cf3.jpg)
我们说我有以下结构,
public class Parent
{
public string Id{get;set;}
public string Name{get;set;}
public List<Child> Children{get;set;}
}
public class Child{
public string Id{get;set;}
public string Name{get;set;}
}
我有一个字符串列表,其中包含Ids List< string> Ids,以及Parents List< Parent>列表父母.
如何过滤父母以获得以下内容:
>父ID,其ID包含在所有子项中.
>只有ID与其父项一起包含在ID中的子项.
因此,如果id包含父ID,我希望它与子项一起使用,如果它包含子ID,我希望它与其父项(没有其余子项).
我尝试了以下操作,并且它正在工作,唯一的问题是如果父ID和子ID都存在,它返回只有一个子节点的父节点,而它应该返回所有子节点.
parents
.Where(p => ids.Contains(p.Id) ||
p.Children.Any(x=>ids.Contains(x.Id)))
.Select(res => new Parent() {
Name = res.Name,
Id = res.Id,
Children = es.Children
.Where(child => ids.Contains(child.Id))
.ToList()
});
解决方法:
这非常难看,但应该适合你的情况.
var result = parents
.Where(p => ids.Contains(p.Id) || p.Children.Any(x => ids.Contains(x.Id)))
.Select(res => new Parent()
{ Name = res.Name,
Id = res.Id,
Children = res.Children.Any(c => ids.Contains(c.Id)) && !ids.Contains(res.Id)
? res.Children.Where(child => ids.Contains(child.Id)).ToList()
: res.Children.ToList() })
.ToList();
内容总结
以上是互联网集市为您收集整理的C#Complex Linq-如何获取其id或子ID匹配的对象全部内容,希望文章能够帮你解决C#Complex Linq-如何获取其id或子ID匹配的对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。