用于在 C# 中分析文件的数据结构

本文关键字:文件 数据结构 用于 | 更新日期: 2023-09-27 18:33:09

我有一个以下格式的文件,由不同行的多个条目组成。导演名称 电影名称 总收入 .例如

abc movie1 1mill
xyz movie2 2mill
abc movie3 1mill
abc movie2 4mill
导演名称重复,电影

名称也是如此(导演 1 可以导演与导演 2 同名的电影)? 解析文件的最佳方式是什么,同时提供获取详细信息的能力,例如导演的总收入。我打算有一个字典词典,

类似
   Dictionary<string, Dictionary<string,long>> 

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

用于在 C# 中分析文件的数据结构

您可以使用带有

泛型列表的自定义类,而不是使用字典。

你可以创建一个类,比如

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

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

我希望这将解决您的问题。

我会先添加一个类

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的默认引用比较。

这些只是想法,您必须根据自己的需求进行调整。

希望这有帮助。