无法声明和访问实时搜索功能的列表
Unable to declare and access a List for a live search functionality
正如标题所说,我是 C# 的新手,目前我无法使这个脚本正常工作。
它应该定义一个带有一些虚拟文本的列表并用于搜索目的。
代码如下:
@page "/livesearch"
@using System.Collections.Generic
<input @bind-value="SearchTerm" @bind-value:event="oninput" />
<span class="text-muted ml-5">
Showing @FilteredToDos.Count out of @ToDoItems.Count
</span>
<h4 class="mt-4">To Do's</h4>
<ul>
@foreach (var toDo in FilteredToDos)
{
<li>@toDo.Name</li>
}
</ul>
@code {
// Initialize SearchTerm to "" to prevent null's
string SearchTerm { get; set; } = "";
// Imagine this was retrieved from an API, just hardcoding for demo purposes
List<string> items = new List<string>() { "foo", "bar", "foobar" };
List<items> FilteredToDos => items.Where(i => i.0.ToLower().Contains(SearchTerm.ToLower())).ToList();
}
问题出在最后一行,即 List<items> FilteredToDos
中的 items
和 i.0.ToLower()
部分。
错误说
The type or namespace name 'type/namespace' could not be found (are you missing a using directive or an assembly reference?)
更新截图:
除了 i.0
,
之外,您所附代码中的一些问题
问题:
items
class 缺失。
- 您不能将
List<string>
值分配给 List</* class */>
类型的变量。
解决方法:
- 声明一个
ToDoItem
class.
public class ToDoItem
{
public string Name { get; set; }
}
2.1。 items
应该是 List<ToDoItem>
类型。
2.2。按包含 SearchTerm
的 item.Name
过滤(@MindSwipe 建议使用 string.Contains()
忽略区分大小写)。
List<ToDoItem> items = new List<ToDoItem>()
{
new ToDoItem { Name = "foo" },
new ToDoItem { Name = "bar" },
new ToDoItem { Name = "foobar" }
};
List<ToDoItem> FilteredToDos => items
.Where(i => i.Name.Contains(SearchTerm, StringComparison.InvariantCultureIgnoreCase))
.ToList();
正如标题所说,我是 C# 的新手,目前我无法使这个脚本正常工作。
它应该定义一个带有一些虚拟文本的列表并用于搜索目的。
代码如下:
@page "/livesearch"
@using System.Collections.Generic
<input @bind-value="SearchTerm" @bind-value:event="oninput" />
<span class="text-muted ml-5">
Showing @FilteredToDos.Count out of @ToDoItems.Count
</span>
<h4 class="mt-4">To Do's</h4>
<ul>
@foreach (var toDo in FilteredToDos)
{
<li>@toDo.Name</li>
}
</ul>
@code {
// Initialize SearchTerm to "" to prevent null's
string SearchTerm { get; set; } = "";
// Imagine this was retrieved from an API, just hardcoding for demo purposes
List<string> items = new List<string>() { "foo", "bar", "foobar" };
List<items> FilteredToDos => items.Where(i => i.0.ToLower().Contains(SearchTerm.ToLower())).ToList();
}
问题出在最后一行,即 List<items> FilteredToDos
中的 items
和 i.0.ToLower()
部分。
错误说
The type or namespace name 'type/namespace' could not be found (are you missing a using directive or an assembly reference?)
更新截图:
除了 i.0
,
问题:
items
class 缺失。- 您不能将
List<string>
值分配给List</* class */>
类型的变量。
解决方法:
- 声明一个
ToDoItem
class.
public class ToDoItem
{
public string Name { get; set; }
}
2.1。 items
应该是 List<ToDoItem>
类型。
2.2。按包含 SearchTerm
的 item.Name
过滤(@MindSwipe 建议使用 string.Contains()
忽略区分大小写)。
List<ToDoItem> items = new List<ToDoItem>()
{
new ToDoItem { Name = "foo" },
new ToDoItem { Name = "bar" },
new ToDoItem { Name = "foobar" }
};
List<ToDoItem> FilteredToDos => items
.Where(i => i.Name.Contains(SearchTerm, StringComparison.InvariantCultureIgnoreCase))
.ToList();