[英]Linq to select list of items from custom nested list of objects
我為我的應用程序創建了以下對象模型
public class Object
{
public List<Node> Nodes { get; set; }
}
public class Node
{
public InstrumentData InstrumentData { get; set; }
}
public class InstrumentData
{
public List<MySysData> MySysDataList { get; set; }
}
public class MySysData
{
public string SystemName { get; set; }
}
現在我有節點的對象列表。 我想從對象節點列表中選擇not null“SystemName”到字符串列表
我已經嘗試過以下查詢,但仍然沒有預料到。
var test = Object.Nodes.ToList<Node>()
.Select(x => x.InstrumentData?.MySysDataList.ToList<MySysData>()
.Select(y => y.SystemName)
.ToList()) ;
你需要Where
和SelectMany
:
List<string> sysNameList = Object.Nodes
.Where(x => x.InstrumentData?.MySysDataList != null)
.SelectMany(x => x.InstrumentData.MySysDataList
.Select(y => y.SystemName)
.Where(sName => sName != null))
.ToList();
如果要在最終ToList
之前刪除重復項前置Distict
。
如果你真的只想要系統名稱,那么因為你的內部選擇返回一個列表(所以最終的輸出是一個列表列表),你需要使用SelectMany
來“展平”列表。 只要事物是可枚舉的,您也不需要一直重復使用ToList()
。 我認為這樣的事情應該有效:
var test = Object.Nodes
.SelectMany(x => x.InstrumentData?.MySysDataList.Select(y => y.SystemName))
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.