【问题标题】:C# How to show list of objects properties as comma delimited stringC#如何将对象属性列表显示为逗号分隔的字符串
【发布时间】:2016-04-01 21:46:50
【问题描述】:

假设我有这样的对象:

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

public class MyCars
{
    public List<Car> Cars{ get; set; }

    public string GetCars
    {
        get
        {
            return this.Cars != null ? string.Join(", ", Cars.Select(x => x.Name)) : "N/A";
        }
    }
}

如果我的列表中有 3 辆汽车的名称属性设置为“Honda”、“VW”、“GMC”

如何将该列表转换为字符串,以将列表中每辆车的名称显示为逗号分隔: 本田、大众、GMC

我试图在我的 XAML 中将其链接为:

<TextBlock Name="txtCarNames" Text="{Binding Path=MyCars.GetCars}"/>

【问题讨论】:

    标签: c#


    【解决方案1】:

    您可以使用 LINQ 选择所需的属性,然后使用 string.Join 方法来展平列表。

    var cars = new MyCars { /* populate the inner List<Car> */ };
    
    var flatList = cars.Cars != null ? string.Join(", ", cars.Cars.Select(x => x.Name)) : "";
    

    此外,您不能将类和属性都命名为Cars...您必须重命名一个。

    【讨论】:

    • 如果 Cars 为空怎么办?谢谢
    • 谢谢格兰特,... 很有趣。这正是我正在做的,但我仍然看到不正确的输出。我更新了我的问题以显示我在做什么
    • @dbnex14 向我们显示不正确的输出(例如异常?),“看到不正确的输出”将无济于事。
    • 没有例外,如果 Cars == null (但应该显示“N/A”),它什么都不显示(空字符串);否则,它会显示“N/A”(逗号分隔的名称列表的插入)。几乎就像它正在反转 ?: 运算符一样。
    • 不知道是什么。
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多