2

この構造のオブジェクトがあります。

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>'.

どうやってするの?

4

3 に答える 3

4

Enumerable.SelectMany階層をフラット化するために使用できます。

List<string> distinctCodes = itemList
      .SelectMany(x => x.WarehouseInfo)
      .Select(y => y.LocnCode)
      .Distinct()
      .ToList();
于 2013-03-25T17:41:18.157 に答える
1
List<string> codes = itemList.SelectMany(x => x.WarehouseInfo)
                             .Select(y => y.LocnCode)
                             .Distinct()
                             .ToList();

または、を使用してコードから少し変更することもできますSelectMany

List<string> codes = itemList.SelectMany(x => x.WarehouseInfo
                                               .Select(y => y.LocnCode))
                             .Distinct()
                             .ToList();
于 2013-03-25T17:39:57.677 に答える
0

他のバージョン:

var query = from order in items
            from warehouse in order.WarehouseInfo 
            select warehouse.LocnCode ;

List<string> codes = query.Distinct().ToList();
于 2013-03-25T17:45:13.987 に答える