我有一个这样的课:

public class MyClass
{
    public int Line;
    public string Name1;
    public string Name2;
}

以及MyClass对象的集合:
List<MyClass> myObjs = myService.GetObjects();

其中myObjs具有2个元素:
[0]: Line: 1, Name1: "Test1", Name2: "Test2"
[1]: Line: 2, Name1: "Test3", Name2: "Test4"

我想让每个对象及其属性串联在一个字符串中:
"1,Test1,Test2;2,Test3,Test4"

我尝试了string.Join(",", myObjs.Select(x => x.Line));
但这只给了我所有Line值的列表。我需要物体中的所有东西。

最佳答案

如果可以手动列出字段,则可以:

String.Join(";", myObjs.Select(x => $"{x.Line},{x.Name1},{x.Name2}"))

如果不是,但是所有字段都是非集合,泛型或索引器
var fields = typeof(MyClass).GetFields();
var result = String.Join(";", myObjs.Select(x =>
                 String.Join(",", fields.Select(f => f.GetValue(x)))
             ));

注意:如果您的类实际上具有属性而不是字段,则应使用GetProperties()而不是GetFields()

最后一个选择是,如果可以覆盖您的类的ToString()方法,可以:
 public override string ToString() => $"{Line},{Name1},{Name2}";

转换此类对象的列表看起来像
 String.Join(";", myObjs)

10-07 19:47
查看更多