我有这个结构的对象。
public class OrderItem
{
public string idProduct { get; set; }
public int quantity { get; set; }
public List<WarehouseItem> WarehouseInfo = new List<WarehouseItem>();
}
public class WarehouseItem
{
public string Name{ get; set; }
public string LocnCode{ get; set; }
}
我需要获取所有LocnCode
并通过它们进行区分,因此结果应该是 List<string>
。
我正在尝试这样做
List<string> codes = itemList.Select(x => x.WarehouseInfo.Select(y => y.LocnCode)).Distinct();
但是有这个错误:
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<string>>' to 'System.Collections.Generic.List<string>'.
怎么做?
最佳答案
您可以使用Enumerable.SelectMany
扁平化层次结构:
List<string> distinctCodes = itemList
.SelectMany(x => x.WarehouseInfo)
.Select(y => y.LocnCode)
.Distinct()
.ToList();
关于c# - LINQ子选择错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15621214/