Linq表达式返回null

Ion*_*goi 3 c# linq lambda xamarin

我在我的备忘录Xamarin应用程序中添加了一个搜索栏.我使用此事件处理程序在文本更改时获取备忘录列表:

private void SearchBar_OnTextChanged(object sender, TextChangedEventArgs e)
    {
        MemoList.ItemsSource = GetMemo(e.NewTextValue);
    }
Run Code Online (Sandbox Code Playgroud)

处理程序调用GetMemo函数,但是当我在searchText变量中有一个值时,函数返回null,我不知道为什么.

ObservableCollection<Memo> GetMemo(string searchText = null)
    {
        if (string.IsNullOrWhiteSpace(searchText))
            return _memos;

        return _memos.Where(c => c.Title.StartsWith(searchText)) as ObservableCollection<Memo>;

    }
Run Code Online (Sandbox Code Playgroud)

Lambda表达式或Linq表达式有问题吗?

我不得不说,当我没有传递任何参数时,函数会正确返回.

Fro*_*ode 8

试试这个:

return new ObservableCollection<Memo>(_memos.Where(c => c.Title.StartsWith(searchText));
Run Code Online (Sandbox Code Playgroud)

您必须围绕来自linq表达式的IEnumerable结果包装ObservableCollection.只需将IEnumerable结果作为ObservableCollection构造函数参数传递.

  • 呃,我迟到了2分钟...... :) (2认同)