无法声明和访问实时搜索功能的列表

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 中的 itemsi.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,

之外,您所附代码中的一些问题

问题:

  1. items class 缺失。
  2. 您不能将 List<string> 值分配给 List</* class */> 类型的变量。

解决方法:

  1. 声明一个 ToDoItem class.
public class ToDoItem
{
    public string Name { get; set; }
}

2.1。 items 应该是 List<ToDoItem> 类型。

2.2。按包含 SearchTermitem.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();