0

我有一个以下格式的文件,其中包含不同行中的多个条目。DirectorName MovieName GrossRevenue 。例如

abc movie1 1mill
xyz movie2 2mill
abc movie3 1mill
abc movie2 4mill

导演姓名重复,电影名也重复(导演1可以导演与导演2同名的电影)?什么是解析文件的最佳方式,同时提供获取细节的能力,比如导演的总收入。我正计划有一个字典词典,比如

   Dictionary<string, Dictionary<string,long>> 

外部字典的键是导演姓名,内部字典的键是电影名称。我可以通过将我的内部字典包装在自定义类中来使它看起来更好,但我想知道是否有更好的方法来解决这个问题。另外,我将如何设计它,以便以后我的文件添加了其他内容,例如流派、演员等,我仍然不必进行完整的重新设计,同时提供按流派或演员分组的能力

4

2 回答 2

1

您可以使用带有通用列表的自定义类,而不是使用字典。

你可以创建一个类

public class Director {

 public string StrDirector { get; set; }
 public string StrMovie { get; set; }
 public Long Revenue { get; set; }

}

然后使用

List<Director> LstEntity = new List<Director>();
Director objDirector = new Director();
objDirector.StrDirector = "abc";
objDirector.StrMovie = "xyz";
objDirector.Revenue = 1000;
LstEntity.Add(objDirector);

//Add each Director Same way

这样,以后如果需要对director的属性进行任何修改,可以通过更新类轻松进行,没有任何问题。

我希望这能解决你的问题。

于 2012-05-04T20:45:50.557 回答
1

我会先添加一个类

public class Movie
{
    public string MovieName {get;set;}
    public DateTime ProductionDate {get;set}
    public decimal Revenue  {get;set;}

    public List<MoviePerson> Stuff {get;set;}
}

public class MoviePerson
{
   public enum PersonType{Actor,Director, ....}

   public string Name {get;set;}
   public string Surname {get;set;}
   public PersonType Duty {get;set}
   ...
}

拥有你的集合Movies可以简单地查询它的导演,例如

List<Movie> movies = new List<Movie>();
....

MoviePerson director = 
         new MoviePerson {Name = "James",
                                Surname = "Cameron", 
                                   PersonType = Director}
from movie in movies where movie.Stuff.Contains(director) select movie

要完成这项工作,您必须覆盖的默认参考比较MoviePerson

这些只是想法,您必须使它们适合您的需求。

希望这可以帮助。

于 2012-05-04T20:46:35.043 回答