C#| Linq | SubSonic - 类对象

时间:2009-08-07 09:10:16

标签: c# linq subsonic

我在下面有这个类/对象:

public class Person
{
  public  string FirstName;
  public  string MI;
  public  string LastName;
}

Person p=new Person();
      p.FirstName = "Jeff";
      p.MI = "A";
      p.LastName = "Price";

linq或c#或者亚音中是否有内置的东西会产生这样的输出?:

string myString = "FirstName=\"Jeff\" p.MI=\"A\" p.LastName=\"Price\"";

2 个答案:

答案 0 :(得分:2)

ToString似乎需要Person重载。另外,不要公开这样的 public 字段。使用properties

    public class Person
    {
        public string FirstName { get; set; }
        public string MI { get; set; }
        public string LastName { get; set; }

        public override string ToString()
        {
            return "FirstName=\"" + FirstName + "\" p.MI=\"" + MI + "\" p.LastName=\"" + LastName + "\"";
        }
    }

(适用编辑)

这是您的请求(但需要属性):

    public static class ObjectPrettyPrint
    {
        public static string ToString(object obj)
        {
            Type type = obj.GetType();
            PropertyInfo[] props = type.GetProperties();
            StringBuilder sb = new StringBuilder();
            foreach (var prop in props)
            {
                sb.Append(prop.Name);
                sb.Append("=\"");
                sb.Append(prop.GetValue(obj, null));
                sb.Append("\" ");
            }

            return sb.ToString();
        }
    }

用法:

        Console.WriteLine(ObjectPrettyPrint.ToString(new Person { FirstName, = "A", MI = "B", LastName = "C"  }));

答案 1 :(得分:1)

嗯,对于LINQ和C#,默认情况下不是。

但是,在Person类中,您可以覆盖ToString()事件来为您执行此操作。

    public override string ToString()
    {
        return string.Format("p.Firstname={0} p.MI={1} p.LastName={2}", FirstName, MI, LastName);
    }

然后你可以按如下方式调用它:

string myString = p.ToString();

这将为您提供所需的输出。