c# - LINQ子选择错误

标签 c# linq select

我有这个结构的对象。

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/

相关文章:

c# - C# : why is it implicitly by reference? 传入数组参数

c# - 如何在 Visual Studio 中使用堆栈跟踪进行调试?

c# - 将 IQueryable where 子句从 DTO 映射到实体

mysql - 下面的示例如何写总和和计数?

c# - 优化验证码(避免重复检查)

c# - 如何使用值名称获取重复值的计数

c# - DISTINCT() 和 ORDERBY 问题

C# LINQ 错误帮助

mysql - 按时间选择时间戳忽略日期

mysql - 搜索查询计算两个字段并将结果放入 1 行组中