public ViewResult Index(string currentFilter, string searchString, int? page)
{
if (Request.HttpMethod == "GET")
{
searchString = currentFilter;
}
else
{
page = 1;
}
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.AsQueryable().Where(s => s.APPLICANT_Lastname.ToUpper().Contains(searchString.ToUpper())
|| s.APPLICANT_FirstName.ToUpper().Contains(searchString.ToUpper()));
}
}
if (currentInstructor != null)
{
instructors.Add(currentInstructor);
}
reader.Close();
conn.Close();
}
int pageSize = 10;
int pageNumber = (page ?? 0);
return View(instructors.ToPagedList(pageNumber, pageSize));
}
此行中的错误
if (!String.IsNullOrEmpty(searchString))
{
currentInstructor = instructors.AsQueryable().Where(s => s.APPLICANT_Lastname.ToUpper().Contains(searchString.ToUpper())
|| s.APPLICANT_FirstName.ToUpper().Contains(searchString.ToUpper()));
}
这是我第一次遇到这种类型的错误。 。 我在这种错误中浪费了将近2个小时 我希望有人可以在这种情况下帮助我。 。感谢那些愿意帮助的人。 。非常感谢:) KUDOS !!
答案 0 :(得分:3)
正如错误所示,您正在尝试将单个对象分配给列表。
currentInstructor = instructors.AsQueryable().Where(s => s.APPLICANT_Lastname.ToUpper().Contains(searchString.ToUpper())
|| s.APPLICANT_FirstName.ToUpper().Contains(searchString.ToUpper()));
如果只有一个结果你需要使用SingleOrDefault(),并且如果有多个记录,请使用FirstOrDefault()从结果集中提取第一个记录。
instructors.AsQueryable().Where(s => s.APPLICANT_Lastname.ToUpper().Contains(searchString.ToUpper())
|| s.APPLICANT_FirstName.ToUpper().Contains(searchString.ToUpper())).FirstOrDefault();
答案 1 :(得分:2)
您可能希望列表中的第一个申请人。
currentInstructor = instructors
.AsQueryable()
.Where(s => s.APPLICANT_Lastname.ToUpper().Contains(searchString.ToUpper()) || s.APPLICANT_FirstName.ToUpper().Contains(searchString.ToUpper()))
.FirstOrDefault();