2011-02-04 55 views
0

行,所以我有:C#/ Compact Framework的2.0 /列表查询错误

var filteredItems = lstAllItems.Where(item => item.Parent.ID == parentId); 

TreeNode childNode; 
    foreach (var i in filteredItems.ToList()) 
    { 
     if (parentNode == null) 
      childNode = tvwPickList.Nodes.Add(i.Text); 
     else 
      childNode = parentNode.Nodes.Add(i.Text); 

     RefreshPickList(i.ID, childNode); 
    } 

这是在我抛出一些错误:

警告1个参考键入 'System.Runtime.Serialization.SerializationInfo'声称它是在'c:\ Program Files(x86)\ Microsoft.NET \ SDK \ CompactFramework \ v2.0 \ WindowsCE \ mscorlib.dll'中定义的,但找不到它c:\ Program Files(x86)\ Reference大会\微软\框架\ v3.5版本\ System.Data.DataSetExtensions.dll IMSCF

错误2型“System.Data.DataT能够'是在未引用的程序集中定义的。您必须添加对程序集“System.Data,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的引用。 C:\ Data \ C#\ IMSCF \ IMSCF \ frmPickList.cs 52 13 IMSCF

错误3类型'System.Data.DataRow'是在未引用的程序集中定义的。您必须添加对程序集“System.Data,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089”的引用。 C:\ DATA \ C#\ IMSCF \ IMSCF \ frmPickList.cs 52 13 IMSCF

的 '变种' 关键字获得通过的最后两个突出显示的错误。

我很新的C#和.NET CF,所以我真的不知道我在做什么错在这里;该代码是根据我在某个C#站点上找到的内容进行调整的。

有趣的是,这些提法都在我的项目中存在... using语句没事在那里等......

有什么在这里,.NET CF不支持(这是成为一个经常性主题在这个项目中:P)

在此先感谢。

回答

4

您正在使用.net cf 3.5的功能。您的标题说您正在使用.net cf 2.0。这是你的问题。

更具体地:

  1. Where方法是LINQ的一部分。 .net cf 3.5引入了LINQ。
  2. Lamba表达式要求.net cf 3.5
  3. 此外,var关键字不是.net 2.0的一部分。

因此:要么使用.net cf 3.5(推荐),要么只使用2.0可以处理的东西。

(有可能把它在技术上更好的办法,但它归结为2.0与3.5)

编辑:如何升级到3.5:
在Visual Studio 2008中,从菜单中选择项目 ,点击升级项目并点击是的。应该是这样的。

+0

是的,我只是想出了这件事。由于设备本身,我需要在2.0上;我找到了另一种方法。 – 2011-02-04 17:12:12

1

也许你有一个类库和Windows Mobile应用程序?

如果是这样,您是否检查过您的类库是使用正确的Visual Studio模板创建的?

你需要创造这样的类库与移动的Visual Studio安装的模板,因为它似乎你与普通的C#类库之一,它增加了未在CF. pressent命名空间做

您可以检查的另一件事是,也许您的Windows Mobile形成项目是CF 3.5,而你的类库是2.0。转到两个项目属性并检查目标框架是否相等(您将使用CF 3.5 !!)。

相关问题