0

我以前从未对 LINQ 做过任何事情,但是我有使用 MySQL 的经验。

我在Microsoft® ASP.NET 4 Step by Step的第 232 页上,这本书已经开始谈论 LINQ,这很酷。

这本书指示我输入我的第一个 LINQ 查询,但是它导致 Visual Studio 出现 19 个错误,因为无法识别where,orderby和命令。select

以下是书中的代码:

书号

下面是我的代码(以屏幕截图的形式,您可以看到 Visual Studio 不喜欢的内容):

我的代码

我究竟做错了什么?

谢谢

4

6 回答 6

4

在您的 Linq 查询中,带有“<>”的 TechnologyDescriptor 标记令人讨厌。您需要做的是为 technologyDescriptor 列表中的单个项目指定一个命名变量实例。例如:

GridView1.DataSource = from td in technologyDescriptor where td.TechnologyName.Contains(".Net") == true order by td.TechologyName.Length
select td.TechnologyName.ToUpper();

您可以将此查询视为类似于在 technologyDescriptor 列表上循环的 foreach 循环,并且“td”是每个循环的单独记录

于 2012-05-29T19:03:09.210 回答
2

例如,您在 TechnologyDescriptor 周围有不必要的尖括号 (<>)。

于 2012-05-29T18:57:17.493 回答
2

您已经用尖括号将变量名 technologyDescriptor 括起来了。请从您的代码中删除这些括号。

于 2012-05-29T18:57:54.433 回答
1

它应该说:“来自...的技术描述符”不是from <TechnologyDescriptor>

于 2012-05-29T18:57:44.183 回答
1

您的变量使用量有点偏。还有,是technologyDescriptor收藏吗?

如果是这样,请将您的代码更改为:

GridView1.DataSource = from t in technologyDescriptor
                       where t.TechnologyName.Contains(".NET")
                       orderby t.TechnologyName.Length
                       select t.TechnologyName.ToUpper();
于 2012-05-29T19:00:46.170 回答
0

除了 linq 查询的问题之外,屏幕截图还显示您存在变量范围问题。具体来说,您technologyDescriptor用来指代两个不同的事物。您的表单是否有一个名为“technologyDescriptor”的控件,或者在部分类的另一部分中声明的该名称的字段?

于 2012-05-29T20:37:01.797 回答