以下に表示される ListType というクラスに保存される 2 つのリストがあります。クラス型の値が一致するときに、2 つのリストを互いに一致させようとしています。両方のリストには郡と act_loc クラス タイプが含まれているため、fileList リストの郡と act_loc が国勢調査ファイルの郡と act_loc と等しい場合は、すべてのクラス タイプ データをファイルリストリスト。
ListType クラス:
public class ListType
{
public ListType()
{
}
public string ID { get; set; }
public string REGSID { get; set; }
public string county { get; set; }
public string act_loc { get; set; }
public string hmonth { get; set; }
public string hisnc { get; set; }
public string hinc { get; set; }
public string black00 {get; set;}
public string asian00 { get; set; }
public string hispanic00 { get; set; }
public string pop2000 { get; set; }
public string popden2000 { get; set; }
public string totalunder18_00 { get; set; }
public string sixtyfiveplus_00 { get; set; }
public string percentforeign_00 { get; set; }
public string percentsixteenplusinmanu_00 { get; set; }
public string medhouseholdinc_00 { get; set; }
public string totalbelowPOV_00 { get; set; }
public string englishverywell_00 { get; set; }
public string black10 { get; set; }
public string asian10 { get; set; }
public string hispanic10 { get; set; }
public string pop2010 { get; set; }
public string popden2010 { get; set; }
public string totalunder18_10 { get; set; }
public string sixtyfiveplus_10 { get; set; }
public string percentforeign_10 { get; set; }
public string percentsixteenplus_10 { get; set; }
public string medhouseholdinc_10 { get; set; }
public string totalbelowPOV_10 { get; set; }
public string englishverywell_10 { get; set; }
public string etype { get; set; }
public string etypeText { get; set; }
public string edate { get; set; }
public string fmp_amt { get; set; }
public string newenftype_text { get; set; }
public string finalenftype_text { get; set; }
}
}
リストに解析された 1 つのファイル:
public static List<ListType> census = new List<Listtype>();
using (StreamReader read = new StreamReader(Filename))
{
read.ReadLine();
while (!read.EndOfStream)
{
string line = read.ReadLine();
string[] splitline = line.Split(',');
ListType l = new ListType();
l.county = splitline[0].ToString();
l.act_loc = splitline[1].ToString();
l.black00 = splitline[2].ToString();
l.asian00 = splitline[3].ToString();
l.hispanic00 = splitline[4].ToString();
l.pop2000 = splitline[5].ToString();
l.popden2000 = splitline[6].ToString();
l.totalunder18_00 = splitline[7].ToString();
l.sixtyfiveplus_00 = splitline[8].ToString();
l.percentforeign_00 = splitline[9].ToString();
l.percentsixteenplusinmanu_00 = splitline[10].ToString();
l.medhouseholdinc_00 = splitline[11].ToString();
l.totalbelowPOV_00 = splitline[12].ToString();
l.englishverywell_00 = splitline[13].ToString();
l.hispanic10 = splitline[14].ToString();
l.black00 = splitline[15].ToString();
l.asian00 = splitline[16].ToString();
l.sixtyfiveplus_10 = splitline[17].ToString();
l.totalunder18_10 = splitline[18].ToString();
l.englishverywell_10 = splitline[19].ToString();
l.percentforeign_10 = splitline[20].ToString();
l.percentsixteenplus_10 = splitline[21].ToString();
l.medhouseholdinc_10 = splitline[22].ToString();
l.totalbelowPOV_10 = splitline[23].ToString();
l.pop2010 = splitline[24].ToString();
l.popden2010 = splitline[25].ToString();
census.Add(l);
}
}
FileList リストに解析された他のファイル:
public static List,ListType> FileList = new List<ListType>();
using (StreamReader read = new StreamReader(Filename))
{
read.ReadLine();
while (!read.EndOfStream)
{
a++;
string line = read.ReadLine();
string[] splitline = line.Split(',');
ListType l = new ListType();
l.ID = splitline[0].ToString();
l.REGSID = splitline[1].ToString();
l.act_loc = l.ID.Substring(0, 2);
l.county = splitline[2].ToString();
l.hmonth = splitline[4].ToString();
l.hisnc = splitline[5].ToString();
l.hinc = splitline[6].ToString();
l.etype = splitline[7].ToString();
l.etypeText = splitline[8].ToString();
l.edate = splitline[9].ToString();
l.fmp_amt = splitline[10].ToString();
l.finalenftype_text = splitline[11].ToString();
fileList.Add(l);
}
}
FileList の Foreach ListType 郡と act_loc 同じ郡と act_loc が国勢調査リストに存在するかどうかを確認したい (同じ郡と act_loc が FileList リストに複数回存在する可能性がある場合、国勢調査リストには 1 回だけ表示される)。国勢調査リストのすべてのデータを FileList リストに書き込みます。この部分を行うのに問題があります。FileList の各レコードをループしたいのですが、国勢調査リストに存在する場合は、国勢調査データを FileList レコードに書き込みたいのですが、この下の国勢調査では、データへの書き込み時に国勢調査が存在しません。国勢調査にアクセスするにはどうすればよいですか行を変更して、fileList リストに書き込めるようにします。
foreach (ListType l in fileList)
{
bool exists = census.Exists(p => p.county == l.county && p.act_loc == l.act_loc);
if (exists)
{
//census data record to matching FileList record
l.black00 = census.black00;
l.asian00 = census.asian00;
l.hispanic00 = census.hispanic00;
l.pop2000 = census.pop2000;
l.popden2000 = census.popden2000;
l.totalunder18_00 = census.totalunder18_00;
l.sixtyfiveplus_00 = census.sixtyfiveplus_00;
l.percentforeign_00 = census.percentforeign_00;
l.percentsixteenplusinmanu_00 = census.percentsixteenplusinmanu_00;
l.medhouseholdinc_00 = census.medhouseholdinc_00;
l.totalbelowPOV_00 = census.totalbelowPOV_00;
l.englishverywell_00 = census.englishverywell;
l.hispanic10 = census.hispanic10;
l.black00 = census.black10;
l.asian00 = census.asian10;
l.sixtyfiveplus_10 = census.sixtyfiveplus_10;
l.totalunder18_10 = census.totalunder18_10;
l.englishverywell_10 = census.englishverywell_10;
l.percentforeign_10 = census.percentforeign_10;
l.percentsixteenplus_10 = census.percentsixteenplus_10;
l.medhouseholdinc_10 = census.medhouseholdinc_10;
l.totalbelowPOV_10 = census.totalbelowPOV_10;
l.pop2010 = census.pop2010;
l.popden2010 = census.popden2010;
}
}