C# 将列表转换为另一个列表中所有对象的逗号分隔值列表

C# 将列表转换为另一个列表中所有对象的逗号分隔值列表,c#,C#,这个问题和答案非常相似,但我需要对列表中的所有对象而不是一个对象执行此操作 想一想锻炼,你可以写: 台式压力机:135x10、185x10、225x8、275x5、315x3 哑铃压力机:65x12、85x12、95x10、100x8、100x8 也就是说,您有一个练习列表,每个练习都有一个集合/重复列表。对于列表中的每个练习,您希望将其集合/重复列表转换为上面的形式 这些类看起来像: public class Workout { public int WorkoutId { get;

这个问题和答案非常相似,但我需要对列表中的所有对象而不是一个对象执行此操作

想一想锻炼,你可以写:

台式压力机:135x10、185x10、225x8、275x5、315x3

哑铃压力机:65x12、85x12、95x10、100x8、100x8

也就是说,您有一个练习列表,每个练习都有一个集合/重复列表。对于列表中的每个练习,您希望将其集合/重复列表转换为上面的形式

这些类看起来像:

public class Workout
{
    public int WorkoutId { get; set; }
    public string Name { get; set; }
    public List<Activity> Activities { get; set; }
    public DateTime Date { get; set; }
}

// Activity is an instance of an exercise,
// i.e., you bench press, dumbbell press, etc... all in one workout
public class Activity
{
    public int ActivityId { get; set; }
    public Exercise Exercise { get; set; }
    public List<Set> Sets { get; set; }
}

// Sets just hold Weight and Reps
public class Set
{
    public int SetId { get; set; }
    public int Weight { get; set; }
    public int Reps { get; set; }
}
根据我之前链接的答案,我得出以下结论:

string.Join(",", 
     workout.Activities.Select(
         activity => activity.Sets.Select(
             set => set.Weight.ToString() + "x" + set.Reps.ToString()
         )
     ));
但这会产生:

System.Linq.Enumerable+WhereSelectListIterator2[MyLifts.Models.Set,System.String],System.Linq.Enumerable+WhereSelectListIterator2[MyLifts.Models.Set,System.String],System.Linq.Enumerable+WhereSelectListIterator2[MyLifts.Models.Set,System.String],System.Linq.Enumerable+WhereSelectListIterator2[MyLifts.Models.Set,System.String],System.Linq.Enumerable+WhereSelectListIterator`2[MyLifts.Models.Set,System.String]


如果有嵌套选择,则内部选择返回可联接的IEnumerable,而外部选择返回IEnumerable

运动和锻炼是一回事吗?假设他们正在尝试:

string.Join(",", 
 workout.Activities.Select(
     activity => activity.Exercise.Name + ": " + String.Join(",", 
         activity.Sets.Select(
              set => set.Weight.ToString() + "x" + set.Reps.ToString()
         )
     )
 ));

…但这似乎不起作用,它有什么作用?给你一个错误?不给你想要的绳子?不编译?@MattBurland,更新了问题。好吧,差不多就这样了,除了我得到了一个巨大的练习、成套动作和重复的列表,也就是板凳:225x5,275x3哑铃板凳:85x12,95x8,我希望把它们放到一个字符串列表中,也就是板凳和哑铃板凳是列表中的两个不同的项目。我想我的问题没有解释我希望在哪里存储它,所以:给我一些时间来弄清楚,我很可能会接受这个答案。要得到你所描述的,你只需要省去外部字符串。Join。workout.Activities.Select的结果将是可枚举的字符串。@Dan,注意。这就是我要找的。谢谢各位
string.Join(",", 
 workout.Activities.Select(
     activity => activity.Exercise.Name + ": " + String.Join(",", 
         activity.Sets.Select(
              set => set.Weight.ToString() + "x" + set.Reps.ToString()
         )
     )
 ));