現在コードを修正していて、検索機能を追加しています..しかし、デバッグすると、何かがうまくいかず、エラーが表示されます。
これが私のコードです:
public ViewResult Index(string currentFilter, string searchString, int? page) {
if(Request.HttpMethod=="GET") {
searchString=currentFilter;
}
else {
page=0;
}
ViewBag.CurrentFilter=searchString;
var connString=ConfigurationManager.ConnectionStrings["ApplicantDB"].ConnectionString;
List<Applicant> instructors=new List<Applicant>();
using(var conn=new SqlConnection(connString)) {
conn.Open();
var query=new SqlCommand(
"SELECT TOP 50 APPLICANT_ID, APPLICANT_Lastname, APPLICANT_FirstName, APPLICANT_MiddleName, APPLICANT_Address, APPLICANT_City"+
" FROM APPLICANT", conn);
var reader=query.ExecuteReader();
int currentPersonID=0;
Applicant currentInstructor=null;
while(reader.Read()) {
var personID=Convert.ToInt32(reader["APPLICANT_ID"]);
if(personID!=currentPersonID) {
currentPersonID=personID;
if(currentInstructor!=null) {
instructors.Add(currentInstructor);
}
currentInstructor=new Applicant();
currentInstructor.APPLICANT_ID=Convert.ToInt32(reader["APPLICANT_ID"].ToString());
currentInstructor.APPLICANT_Lastname=reader["APPLICANT_Lastname"].ToString();
currentInstructor.APPLICANT_FirstName=reader["APPLICANT_FirstName"].ToString();
currentInstructor.APPLICANT_MiddleName=reader["APPLICANT_MiddleName"].ToString();
currentInstructor.APPLICANT_Address=reader["APPLICANT_Address"].ToString();
currentInstructor.APPLICANT_City=reader["APPLICANT_City"].ToString();
}
}
if(!String.IsNullOrEmpty(searchString)) {
currentInstructor=
instructors.Where(
s =>
s.APPLICANT_Lastname.ToUpper().Contains(searchString.ToUpper())
||
s.APPLICANT_FirstName.ToUpper().Contains(searchString.ToUpper())
).FirstOrDefault();
currentInstructor.APPLICANT_ID=Convert.ToInt32(reader["APPLICANT_ID"].ToString());
currentInstructor.APPLICANT_Lastname=reader["APPLICANT_Lastname"].ToString();
currentInstructor.APPLICANT_FirstName=reader["APPLICANT_FirstName"].ToString();
currentInstructor.APPLICANT_MiddleName=reader["APPLICANT_MiddleName"].ToString();
currentInstructor.APPLICANT_Address=reader["APPLICANT_Address"].ToString();
currentInstructor.APPLICANT_City=reader["APPLICANT_City"].ToString();
}
if(currentInstructor!=null) {
instructors.Add(currentInstructor);
}
reader.Close();
conn.Close();
}
int pageSize=10;
int pageNumber=(page??0);
return View(instructors.ToPagedList(pageNumber, pageSize));
}
そして、エラーはこの行に表示されます..
データが存在しない場合の読み取りの試みは無効です。
説明:
現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細:
System.InvalidOperationException: データが存在しない場合の無効な読み取り試行。
currentInstructor=
instructors.Where(
s =>
s.APPLICANT_Lastname.ToUpper().Contains(searchString.ToUpper())
||
s.APPLICANT_FirstName.ToUpper().Contains(searchString.ToUpper())
).FirstOrDefault();
currentInstructor.APPLICANT_ID=Convert.ToInt32(reader["APPLICANT_ID"].ToString());
currentInstructor.APPLICANT_Lastname=reader["APPLICANT_Lastname"].ToString();