Linq获取孩子的姓名

时间:2018-06-16 09:31:41

标签: linq

我想将一个洗碗机名称列表写入CSV。

用户有房屋清单,房子有洗碗机清单

CSV部分已完成,但我对LINQ不太熟悉。

我如何获得洗碗机的名称?我不能添加" .name"到下面的LINQ。

string Join(",",User.Houses.SelectMany(h => h.Dishwashers))

1 个答案:

答案 0 :(得分:0)

您需要投射洗碗机名称。

string.Join(string separator, params string[] value)需要一系列名称。

string Join(",", User.Houses.SelectMany(h => h.Dishwashers).Select(dw => dw.Name).ToArray())

我期待这样的事情:

using System;
using System.Linq;


class House
{
    public Dishwasher[] Dishwashers{get;set;}
}

class Dishwasher 
{
    public string Name {get;set;}
}


public class Program
{
    public static void Main()
    {

        var houses = new [] {
            new House(){ Dishwashers = new [] { new Dishwasher(){ Name="DW1"}, new Dishwasher(){ Name="DW12"} }},
            new House(){ Dishwashers = new [] { new Dishwasher(){ Name="DW2"}, new Dishwasher(){ Name="DW22"} }}
        };

        var allDishwashers = houses.SelectMany(h=> h.Dishwashers);
        Console.WriteLine(string.Join(",", allDishwashers.Select(dw=> dw.Name).ToArray())); 
    }
}

这里有一个有效的.NETFiddle:https://dotnetfiddle.net/fat1fM