好的,我有:
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)
提前致谢。
答案 0 :(得分:4)
您正在使用.net cf 3.5的功能。你的标题是你正在使用.net cf 2.0。这导致了你的问题。
更具体地说:
Where
方法是LINQ的一部分。 LINQ与.net cf 3.5一起推出。 var
关键字不是.net 2.0的一部分。 所以:要么使用.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 !!)。