LINQ 方法不返回任何结果的问题
problems with LINQ method not returning any results
目前我对列表的 LINQ 查询未返回搜索结果。我正在尝试向该方法传递一个字符串,它会在其中搜索每个对象 FirstName, LastName, and Username
字段。
这是我的方法:
public IEnumerable<Volunteer> Search(string key)
{
IEnumerable<Volunteer> searchResults = _volunteerList.Where(v => v.FirstName == key
|| v.LastName == key
|| v.Username == key);
return searchResults;
}
我已验证字符串 key
正在传递到方法中,并且包含正确的值“Bob”。
这是我的 _volunteerList
:
中的对象列表
new Volunteer {id = 1, FirstName = "Bob", LastName = "Evans", Username = "BEvans", Password= "1991", StreetAddress = "1995 StreetName Ave", State = "FL", City = "Jacksonville", ZipCode = 32225, ApprovalStatus = "Approved"},
new Volunteer {id = 2, FirstName = "Jim", LastName = "Evans", Username = "JEvans", Password= "1992", StreetAddress = "1995 StreetName Ave", State = "FL", City = "Jacksonville", ZipCode = 32225, ApprovalStatus = "Approved"}
对我来说,从我查找的所有内容来看,LINQ 语句的语法看起来是正确的,并且没有返回任何错误(至少在 VS19 中)。有什么我想念的吗?
提前致谢。
仅供参考:相关methods/code:
家庭控制器 - 搜索()
[HttpGet]
public ActionResult Search(string key)
{
IEnumerable<Volunteer> results = _volunteerRepository.Search(key);
ViewData.Model = results;
return View("SearchResults");
}
管理志愿者(查看)- 表格
<form method="get" asp-action="Search" >
<table>
<tr>
<td><input type="text" placeholder="Search" name="Key" value ="Bob" class="form-control"/> </td>
<td><input type="submit" value="Search" class="btn btn-primary"></td>
</tr>
</table>
</form>
我最近遇到了同样的问题,我所做的就是把它放在我的 IEnumerable 的末尾。一个 ToList();
IEnumerable<Volunteer> searchResults = _volunteerList.Where(v => v.FirstName == key
|| v.LastName == key
|| v.Username == key).ToList();
坦白说...我不知道我做了什么,但现在我的 SearchResults 视图上显示了正确的输出。
一切正确。我不知道为什么,但在上传结果列表之前经过几个小时的工作后,结果列表显示正确。
感谢您尝试提供的帮助。
您已将 _volunteerList
声明为 List<Volunteer>
或 IEnumerable<Volunteer>
?似乎存在一些类型转换问题。尝试在使用 IEnumerable<Volunteer>
的地方保留 List<Volunteer>
。看看是否有效。
目前我对列表的 LINQ 查询未返回搜索结果。我正在尝试向该方法传递一个字符串,它会在其中搜索每个对象 FirstName, LastName, and Username
字段。
这是我的方法:
public IEnumerable<Volunteer> Search(string key)
{
IEnumerable<Volunteer> searchResults = _volunteerList.Where(v => v.FirstName == key
|| v.LastName == key
|| v.Username == key);
return searchResults;
}
我已验证字符串 key
正在传递到方法中,并且包含正确的值“Bob”。
这是我的 _volunteerList
:
new Volunteer {id = 1, FirstName = "Bob", LastName = "Evans", Username = "BEvans", Password= "1991", StreetAddress = "1995 StreetName Ave", State = "FL", City = "Jacksonville", ZipCode = 32225, ApprovalStatus = "Approved"},
new Volunteer {id = 2, FirstName = "Jim", LastName = "Evans", Username = "JEvans", Password= "1992", StreetAddress = "1995 StreetName Ave", State = "FL", City = "Jacksonville", ZipCode = 32225, ApprovalStatus = "Approved"}
对我来说,从我查找的所有内容来看,LINQ 语句的语法看起来是正确的,并且没有返回任何错误(至少在 VS19 中)。有什么我想念的吗?
提前致谢。
仅供参考:相关methods/code:
家庭控制器 - 搜索()
[HttpGet]
public ActionResult Search(string key)
{
IEnumerable<Volunteer> results = _volunteerRepository.Search(key);
ViewData.Model = results;
return View("SearchResults");
}
管理志愿者(查看)- 表格
<form method="get" asp-action="Search" >
<table>
<tr>
<td><input type="text" placeholder="Search" name="Key" value ="Bob" class="form-control"/> </td>
<td><input type="submit" value="Search" class="btn btn-primary"></td>
</tr>
</table>
</form>
我最近遇到了同样的问题,我所做的就是把它放在我的 IEnumerable 的末尾。一个 ToList();
IEnumerable<Volunteer> searchResults = _volunteerList.Where(v => v.FirstName == key
|| v.LastName == key
|| v.Username == key).ToList();
坦白说...我不知道我做了什么,但现在我的 SearchResults 视图上显示了正确的输出。
一切正确。我不知道为什么,但在上传结果列表之前经过几个小时的工作后,结果列表显示正确。
感谢您尝试提供的帮助。
您已将 _volunteerList
声明为 List<Volunteer>
或 IEnumerable<Volunteer>
?似乎存在一些类型转换问题。尝试在使用 IEnumerable<Volunteer>
的地方保留 List<Volunteer>
。看看是否有效。