我想从3种不同的文本文件中读取数据,如下所示,它们具有不同的格式,基于某些输入源和目标,我需要从以下3种格式中获取记录,并且需要填充将显示非冗余记录的模型到客户端,我不确定如何从这3个不同的文件中获取经过过滤的非冗余记录。我正在尝试通过创建端点来使用Web应用程序来实现它。
http://{localhost}/searchFlights/{Origin}/{Destination}
Provider1 --------------
Origin,Departure Time,Destination,Destination Time,Price
LAS,6/23/2014 13:30:00,LAX,6/23/2014 14:40:00,$151.00
YYZ,6/15/2014 6:45:00,YYC,6/15/2014 8:54:00,$578.00
MIA,6/23/2014 19:40:00,ORD,6/23/2014 21:45:00,$532.00
Provider2 --------------
Origin,Departure Time,Destination,Destination Time,Price
JFK,6-21-2014 17:55:00,YEG,6-21-2014 23:23:00,$589.00
LAS,6-22-2014 9:45:00,YYZ,6-22-2014 21:20:00,$549.00
Provider3 --------------
Origin|Departure Time|Destination|Destination Time|Price
LAS|6/29/2014 14:55:00|LAX|6/29/2014 16:10:00|$201.00
MIA|6/17/2014 14:55:00|ORD|6/17/2014 17:10:00|$542.00
我不确定是否应该用所有记录填充所有列表集合,或者不确定是否应该读取记录? 请为我提供上述帮助。
答案 0 :(得分:0)
您可以做的如下:
Equals
和GetHashCode
方法,以便您可以确定2个对象如何相等。 (这将允许您过滤出重复项。)Factory
,该路径指定了路径和文件类型,将产生一个IEnumerable
,其中包含文件中的所有对象。 HashSet
中。这样会产生一个包含唯一项的集合。请注意,在第3步中,您也可以使用HashSet
,以便立即返回唯一项列表,从而有可能节省您在第4步中需要执行的迭代次数。 / p>
根据您的评论,这里是Factory
模式的来源。此类将提供有关如何从文件中加载对象的抽象。像这样:
public class FlightFactory {
public static final int FILE_TYPE_1;
public static final int FILE_TYPE_2;
public static final int FILE_TYPE_3;
public static IEnumerble<Flight> loadFlightsFromFile(string filePath, int fileType) {
switch(fileType) {
case FILE_TYPE_1:
return LoadFromFileType1(filePath);
...
}
}
}
然后,每个LoadFromFileTypeX
方法将实现适当的CSV阅读器或类似的方法(并将其声明为私有)。它的作用是从文件中读取和加载内容。