C#/ Compact Framework 2.0 /列表查询错误

时间:2011-02-04 13:04:39

标签: c# .net list compact-framework

好的,我有:

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 Assemblies \ Microsoft \ Framework \ v3.5 \ System.Data.DataSetExtensions.dll IMSCF

错误2类型'System.Data.DataTable'在未引用的程序集中定义。您必须添加对程序集'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

'var'关键字由最后两个错误突出显示。

我对C#和.NET CF很陌生,所以我真的不知道我在这里做错了什么;代码改编自我在C#网站上找到的东西。

有趣的是,这些引用确实存在于我的项目中...所有正确的使用语句都存在等等......

这里有什么东西,.NET CF不支持(这已经成为这个项目中反复出现的主题:P)

提前致谢。

2 个答案:

答案 0 :(得分:4)

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

更具体地说:

  1. Where方法是LINQ的一部分。 LINQ与.net cf 3.5一起推出。
  2. Lamba表达式需要.net cf 3.5
  3. 此外,var关键字不是.net 2.0的一部分。
  4. 所以:要么使用.net cf 3.5(推荐),要么只使用2.0可以处理的内容。

    (这可能是一种技术上更好的方式,但它可以归结为2.0 vs. 3.5)

    编辑:如何升级到3.5:
    在Visual Studio 2008中,从菜单中选择 Project ,单击升级项目,然后单击。应该是它。

答案 1 :(得分:1)

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

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

您需要使用安装了Mobile Visual Studio的模板创建这样的类库,因为您似乎使用了常规的C#类库,它添加了CF中不存在的名称空间。

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