gpt4 book ai didi

c# - 需要帮助了解 MVC 中的 LINQ?

转载 作者:太空狗 更新时间:2023-10-29 18:24:43 25 4
gpt4 key购买 nike

我是从 webforms 开始接触 MVC 的新手,这对我来说是一个非常非常陡峭的学习曲线。这是我正在关注的教程中的函数:

public ActionResult Index(string id)
{
string searchString = id;
var movies = from m in db.Movies
select m;
if (!String.IsNullOrEmpty(searchString))
{
movies = movies.Where(s => s.Title.Contains(searchString));
}
return View(movies);
}

这是我认为正在发生的事情。作为操作结果(无参数)的方法重新返回 View 。添加参数是为了告诉应用程序查找“id”字符串。

我发现 lambda 语句更容易理解一些。 if 正在检查 searchString 是否为空,如果不是,则返回与 searchString 中的描述匹配的电影。

然而,在该方法中,searchString 在参数中被赋予了 id 的值。这是我开始迷路的地方,在定义 searchString 之后,在变量 movies 中放置了一个 LINQ 语句。在该语句中,m 的用途是什么?为什么它没有定义或者是?与 lambda 中的 s 相同。

最佳答案

两者都是 ms是隐式类型的。由于您选择的是 m来自 movies , 你不需要告诉 LINQ 什么 m是。它可以通过查看什么来暗示类型 db.Movies是一个集合。所以如果db.MoviesIEnumerable<Movie> (例如)然后 m将是 Movie .

如果您确实想要,没有什么可以阻止您指定类型,因此您可以键入:

 var movies = from Movie m in db.Movies
select m;

但您很少需要这样做。

请注意,您还隐式输入了 movies ,是同一个概念。只要编译器可以明确地找出类型应该是什么。

关于c# - 需要帮助了解 MVC 中的 LINQ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29824798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com