如果我有这个使用.net2.0的X项目,而那个X项目在调用使用.net3.5的Y项目项目中有一个方法具有LINQ,而X项目 这是我在项目中的代码,它有.net3.5 如果我做错了,也要更正LINQ语句..:) [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetDriveType(string lpRootPathName);
public enum DriveType : int
{
Unknown = 0,
NoRoot = 1,
Removable = 2,
Localdisk = 3,
Network = 4,
CD = 5,
RAMDrive = 6
}
var selectedDrives = from s in Environment.GetLogicalDrives() where Enum.GetName(typeof(DriveType), GetDriveType(s)).Equals(DriveType.Removable) select s;
foreach (String drives in selectedDrives)
{
MessageBox.Show(drives);
}
如果执行此操作的机器上没有安装3.5框架,它将失败,因为System.Linq.dll
将不存在。您可以将LINQBridge与.NET 2.0和C#3.0一起使用(这将使您能够访问LINQ to Objects的重新实现),但实际上,让客户端升级可能更容易。2.0现在已经很老了。
或者。。。如果你只需要一个where
,那么有更简单的路线。例如:
foreach (String drives in Environment.GetLogicalDrives())
{
if(!Enum.GetName(typeof(DriveType), GetDriveType(s))
.Equals(DriveType.Removable))
{
continue;
}
MessageBox.Show(drives);
}
.NET 2.0项目不能调用.NET 3.5项目中的方法。