簡體   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