首页 文章

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

提问于
浏览
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 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 回答

  • 1

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

    进一步来说:

    • Where 方法是LINQ的一部分 . LINQ与.net cf 3.5一起推出 .

    • Lamba表达式需要.net cf 3.5

    • 此外, var 关键字不是.net 2.0的一部分 .

    所以:要么使用.net cf 3.5(推荐),要么只使用2.0可以处理的内容 .

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

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

  • 4

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

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

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

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

相关问题