简体   繁体   中英

cannot initialize type with a collection initializer because it does not implement ienumerable

I'm a fairly junior C# developer so please excuse me if this is very easy, but I am getting this error " invalid initializer member declarator " at this line of the code below:

foreach (DataRow p in data.Rows)
{
  DBTrack top = new DBTrack()
 /* ===> Error starts here */   {
     track.TrackID = SQLDataHelper.GetGuid(dataReader, "TrackID"); 
     track.TrackName = SQLDataHelper.GetString(dataReader, "TrackName");
     track.ArtistName = SQLDataHelper.GetString(dataReader, "ArtistName");
     track.AddedDate = SQLDataHelper.GetDateTime(dataReader, "AddedDate");
    };

 DBTrackData.Add(top);
}

Can someone explain what this means and how do I work around and achieve it to display the data?

Here's the full method for your inspection:

 public static List<DBTrack> GetAllTracksFromReaderDB(IDataReader dataReader)
 {
  if (DBTrackData == null)
  {
     DBTrack track = new DBTrack();
     System.Data.DataTable data = new System.Data.DataTable();
     List<DBTrack> daa = new List<DBTrack>();
     DBTrackData = new List<DBTrack>();

     foreach (DataRow p in data.Rows)
     {

     DBTrack top = new DBTrack()
     /* ===> Error starts here */   {
     track.TrackID = SQLDataHelper.GetGuid(dataReader, "TrackID"); 
     track.TrackName = SQLDataHelper.GetString(dataReader, "TrackName");
     track.ArtistName = SQLDataHelper.GetString(dataReader, "ArtistName");
     track.AddedDate = SQLDataHelper.GetDateTime(dataReader, "AddedDate");
     };

    DBTrackData.Add(top);

    }
  }
  return DBTrackData;

 }

EDIT:

public Guid TrackID { get; set; }
public string TrackName { get; set; }
public string ArtistName { get; set; }
public DateTime AddedDate { get; set; }

Any help would be great :) Thanks

Your syntax is invalid for member initialization. You cant instansiate top and try to fill track properties.

It should look like this:

DBTrack top = new DBTrack
{
   TrackID = SQLDataHelper.GetGuid(dataReader, "TrackID"),
   TrackName = SQLDataHelper.GetString(dataReader, "TrackName"),
   ArtistName = SQLDataHelper.GetString(dataReader, "ArtistName"),
   AddedDate = SQLDataHelper.GetDateTime(dataReader, "AddedDate")
};

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM