这个LINQ查询有什么问题

时间:2012-05-29 18:53:57

标签: c# .net linq

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

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

本书已指示我输入我的第一个LINQ查询,但是它导致了Visual Studio中的19个错误,因为whereorderbyselect命令是不承认。

以下是本书的代码:

bookcode

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

mycode

我做错了什么?

三江源

6 个答案:

答案 0 :(得分:4)

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

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

你可以认为这个查询类似于循环在technologyDesciptor列表上的foreach循环,而“td”是每个循环的单独记录

答案 1 :(得分:2)

您可以在TechnologyDescriptor周围使用不必要的尖括号(<>)。

答案 2 :(得分:2)

您已使用尖括号包围变量名称techDescriptor。请从代码中删除这些括号。

答案 3 :(得分:1)

它应该说:“来自 technologyDescriptor in ...”而不是from <TechnologyDescriptor>

答案 4 :(得分:1)

你的变量使用有点偏差。另外,technologyDescriptor是一个集合吗?

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

GridView1.DataSource = from t in technologyDescriptor
                       where t.TechnologyName.Contains(".NET")
                       orderby t.TechnologyName.Length
                       select t.TechnologyName.ToUpper();

答案 5 :(得分:0)

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