根据项目属性的值在控制台上显示列表项目的最佳方式是什么?

What is the best way to display List items on the console based on the value of the items' properties?

我有一个列表,其中包含一些具有 2 个字符串和 2 个 int 属性的对象。我希望能够根据第一个 属性 的内容显示对象的所有 4 个属性。 例如:我想显示第一个 属性 是 "Mozart" 的列表的所有项目的所有数据。 提前致谢!

我有一个非常基本的 class,它有 4 个属性、2 个字符串和 2 个整数,它们都有各自的 getter/setter 设置为 public。

我还有一个包含其中一些对象的列表。

我的代码是这样的。

Console.WriteLine("Give in the name you want to search for!");
string s = Console.ReadLine();

在此之后,我想检查第一个 属性 是否是 "s",如果是,则在屏幕上显示给定对象的所有数据。

像这样的东西就可以了:

class Datum
{
    public string Composer { get; set; }

    ///wharever other proerties you need

    public string DisplayOutput()
    {
        return this.Composer //+ however you want it displayed
    }
}


class Program
{
    static void Main(string[] args)
    {

        List<Datum> data = new List<Datum>();

        foreach (var outputLine in data.Where(d => d.Composer == "Mozart").Select(d=>d.DisplayOutput())
        {
            Console.WriteLine(outputLine);
        }

    }
}

看看这个,如果您遇到任何问题,请告诉我:)

void Main()
{
    List<Music> myMusic = new List<Music>
    {
        new Music 
        { 
            Artist = "Mozart", 
            Album = "Mozarts amazing album", 
            TotalTracks = int.MaxValue, 
            Etc = int.MinValue
        },
        new Music 
        { 
            Artist = "Foo", 
            Album = "Bar", 
            TotalTracks = int.MaxValue, 
            Etc = int.MinValue
        },
    };


    var mozartsMusic = myMusic.Where(music => music.Artist == "Mozart")
                              .ToList();

    mozartsMusic.ForEach(Console.WriteLine);

}

public class Music
{
    public string Artist { get; set; }
    public string Album { get; set; }
    public int TotalTracks { get; set; }
    public int Etc { get; set; }

    public override string ToString()
    {
        return string.Join("\n",this.GetType().GetProperties().Select(p=>string.Format("{0} {1}", p.Name, p.GetValue(this))));
    }
}

这应该是一种可行的方法:

class Composer
{
   public Composer( string lastName, string firstName, int year, int month )
   {
      LastName = lastName;
      FirstName = firstName;
      YearOfBirth = year;
      MonthOfBirth = month;
   }
   public string LastName { get; set; }
   public string FirstName { get; set; }
   public int YearOfBirth { get; set; }
   public int MonthOfBirth { get; set; }
   public override string ToString()
   {
       return string.Format( "{0} {1} {2} {3}", LastName, FirstName, YearOfBirth.ToString(), MonthOfBirth.ToString() );
   }
}


class Program
{
   private static new List<Composer> composerList = new List<Composer>();

   static void Main( string[] args )
   {
      composerList.Add( new Composer( "Mozart", "Wolfgang", 1756, 1 ) );
      composerList.Add( new Composer( "Vivaldi", "Antonio", 1678, 3 ) );

      Console.WriteLine( "Please enter a name you want to search for!" );
      string name = Console.ReadLine();
      ShowComposerData( name );
   }


   private static void ShowComposerData( string name )
   {
      foreach( Composer comp in composerList )
      {
         if( comp.LastName == name )
         {
            Console.WriteLine( comp.ToString() );
         }
      }
   }
}