簡體   English   中英

使用 Linq 在列表中搜索

[英]Searching in a List with Linq

我正在嘗試搜索在對象(標題)的字段中包含特定字符串的對象。 之后,我想用包含該字符串的對象填充一個列表。 我的清單沒有填滿。

    public void SearchMovies(String searckhQuery) {
    Console.WriteLine(searckhQuery);
    if(searckhQuery == null) {
        Console.WriteLine("yesbaby");
    } else {
        Console.WriteLine("itworks");
        List<MovieViewModel> searchMovieList = new List<MovieViewModel>();
        movieList.Where(m => m.Title.Contains(searckhQuery));
        movieList.Select(m => searchMovieList);
        movieList = searchMovieList;
    }
}

我在這里先向您的幫助表示感謝!

您需要了解 linq 查詢的工作原理。 WhereSelect返回一個新集合。 它不會過濾掉同一個列表 object。 語法是:

searchMovieList = movieList.Where(m => m.Title.Contains(searckhQuery)).ToList();

如果MovieViewModelmovieList是不同類型的集合,那么我們將需要使用Select並根據需要分配屬性,例如:

searchMovieList = movieList.Where(m => m.Title.Contains(searckhQuery))
                          .Select(m => new MovieViewModel() 
                                       {
                                          Title = m.Title,
                                          .....
                                       }).ToList();

如果兩者都是相同的類型,那么它可以更簡單:

movieList = movieList.Where(m => m.Title.Contains(searckhQuery)).ToList();

WhereSelect不是操作List<>的方法。 它們適用於任何IEnumerable<>List<>是其中之一,但它們返回一個帶有結果的新序列。 您從不使用該返回值,因此您的列表保持為空。

很難從一個不這樣做的片段中說出你真正想要什么,但我認為你正在尋找這個:

var searchMovieList = movieList.Where(m => m.Title.Contains(searckhQuery)).ToList();

if(!searchMovieList.Any())
{
    searchMovieList = movieList;
}

您可以執行以下操作: var searchMovieList = movieList.Where(m => m.Title.Contains(searchQuery).toList()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM