繁体   English   中英

LINQ to Objects:如何在同一个对象列表中连接不同的属性

[英]LINQ to Objects: How to join different properties in the same List of objects

考虑我有一个具有以下结构的Item对象

Name         Parent Item Name
Service 1   
Stock 1      Service 1
Stock 2 

[更新]:

因此,如果项目具有父项目名称,则它将成为子项目。 我想验证所有父项名称是否为有效的Names值。 例如,在示例数据中,库存1被视为子项,因为它将服务1作为父项目,服务1是有效的项目名称,因为它已经存在于名称中我已尝试执行以下操作,但这样做不返回结果:

var aa = from item in items
                 join
                     item2 in items
                     on item.Name equals item2.ParentRef.Value.ToString()
                 select new { item.Name };

为了使其更具可读性,这里有2个查询:

var listOfNames = items.Select(t => t.Name);

var answers = items.Where(item => i.ParentItemName != null && 
                         !listOfItems.Contains(i.ParentItemName));

答案为您提供了无效项目列表。

这应该返回Join所期望的项目列表

items.Select(x=>items
             .select(y=> {
                           if(x.Name == y.ParentName)
                             return y;
                           else
                             return null;
                          })
             ).Where(x=>x!=null)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM