[英]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 查詢的工作原理。 Where
和Select
返回一個新集合。 它不會過濾掉同一個列表 object。 語法是:
searchMovieList = movieList.Where(m => m.Title.Contains(searckhQuery)).ToList();
如果MovieViewModel
和movieList
是不同類型的集合,那么我們將需要使用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();
Where
和Select
不是操作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.