Как исправить ошибку, например Не содержать определения «Содержит» для добавления панели поиска в Список - PullRequest
0 голосов
/ 07 октября 2019

Я пытался добавить панель поиска в ListView, но это не удалось.

после нажатия кнопки отладить программу, она показывает ошибку вроде "не содержит определения" Contains "... в части кода, стоящей за

Я хотел бы получить помощь для этогоСпасибо

в коде:

public partial class ListPage : ContentPage
{
    public ListPage()
    {

        InitializeComponent();

        listView.ItemsSource = LoadData();

 private void SearchBar_Pressed(object sender, EventArgs e)
    {

       var keyword = MainSearchBar.Text;

       listView.ItemsSource = LoadData().Where(name => name.Contains(keyword));

}

//in the following codes is about the function LoadData() 
which includes the information in the ListView 

ожидается, что я могу найти ключевое слово в поиске, чтобы понять, какова ошибка "Ошибка CS1929: «Видео» не содержит определения для «Contains», и для лучшей перегрузки метода расширения «Enumerable.Contains (IEnumerable, string)» требуется приемник типа «IEnumerable» (CS1929) (MVDemo) "

Пожалуйста, помогите. Спасибо


Да, хорошо, спасибо, позвольте мне опубликовать другие части в этой программе. Для LoadDate (), код позади:

     #region "LoadData"
        protected IList<Video> LoadData()
        {
            var videos = new List<Video>();
            videos.Add(new Video
            {
                ID = "27/items/Final_201903/心相契合Final.mp4",
                Name = "心相契合",
                Writer = "璞園詩歌",
                Photo = ImageSource.FromFile("Heart.png")
            });
            videos.Add(new Video
            {
                ID = "2/items/20191006_769/明光照耀.mov",
                Name = "明光照耀",
                Writer = "璞園詩歌",
                Photo = ImageSource.FromFile("Light.png")
            });

            return videos;
        }
        #endregion

в xaml:

   <StackLayout>
    <SearchBar x:Name="MainSearchBar" SearchButtonPressed="SearchBar_Pressed"/> 
<ListView IsPullToRefreshEnabled="True"  x:Name = "listView"     ItemTapped="Handle_ItemTapped" HasUnevenRows="true" SeparatorVisibility="Default">
      <ListView.ItemTemplate>
          <DataTemplate>
              <ImageCell Text="{Binding Name}"
                        Detail="{Binding Writer}"
                        ImageSource="{Binding Photo}"/>


          </DataTemplate>

      </ListView.ItemTemplate>

      </ListView>

    </StackLayout>

Я сделал страницу для класса "Видео" в файле "Модели", код:

public class Video
{
    public Video()
    {

    }
    public string Name { get; set; }
    public ImageSource Photo { get; set; }
    public string Writer { get; set; }
    public string ID { get; set; }


}

Пожалуйста, помогите мне за это. На самом деле, я новичок в Xamarin. Спасибо

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Если вы хотите отфильтровать Имя, попробуйте код ниже.

Изменить:

listView.ItemsSource = LoadData().Where(name => name.Contains(keyword));

Кому: Имяэто то, что вы определили в классе Видео.

listView.ItemsSource = LoadData().Where(name => name.Name.Contains(keyword));

Я делаю образец для тестирования, он хорошо работает на моей стороне.

Результат:

enter image description here

0 голосов
/ 07 октября 2019

Ваш запрос LINQ имеет синтаксическую ошибку

listView.ItemsSource = LoadData().Where(x => x.name.Contains(keyword));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...