好的,我有:
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 回答
您正在使用.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中,从菜单中选择“项目”,单击“升级项目”,然后单击“是” . 那应该是它 .
也许你有一个类库和Windows Mobile应用程序?
如果是这样,您是否检查过您的类库是否使用正确的Visual Studio模板创建?
您需要使用安装了Mobile Visual Studio的模板创建这样的类库,因为您似乎使用了常规的C#类库,它添加了CF中不存在的名称空间 .
您可能检查的另一件事是您的Windows Mobile表单项目是CF 3.5,而您的类库是2.0 . 转到两个项目属性并检查目标框架是否等于(您将使用CF 3.5 !!) .