从自定义列表中排序和获取数据 - C#
Ordering and getting data from custom List - C#
我创建了一个自定义列表,其中包含完整的文件夹路径和相应的版本号。我将这两个值都存储在一个列表中。我希望他们获得最高的 X 版本及其存储在列表中的相应文件夹路径。我已经为此苦苦挣扎了一段时间,但现在是时候寻求帮助了。我目前得到的代码如下:
这是我的清单class:
class versionFolder
{
public int version { get; set; }
public string folderDIR { get; set; }
public versionFolder(int version, string folderDIR)
{
this.version = version;
this.folderDIR = folderDIR;
}
}
这是我创建列表并向其中添加项目的代码。在底部我想打印出列表的内容(版本和所述版本的文件夹路径)然后在底部我想获得由深度变量设置的最高 X 版本。
public highestVersion(string dsPath, int depth)
{
int num = depth;
List<versionFolder> allVersions = new List<versionFolder>(); //list to hold all version numbers and full path
string folder = dsPath;
string[] versionDIRS = Directory.GetDirectories(folder);
foreach (string folderr in versionDIRS)
{
string[] fullpath = folderr.Split('\');
string folderName = fullpath[fullpath.Length - 1]; //returns VXX-XXXXXXXX (version folder name)
string vString = "6"; //sets a version number, this is actually data extrapolated from the folder path
allVersions.Add(new versionFolder(Convert.ToInt32(vString), fullpath.ToString()));
}
foreach (var version in allVersions)
{
Console.WriteLine("Amount is {0}", version.version);
Console.WriteLine("Amount is {0}", folderDIR.folderDIR);
}
var testtt = allVersions.OrderByDescending(n => n.version).Take(Convert.ToInt32(num));
Console.Write("Test:" + testtt);
}
版本号的输出没问题,但我无法获取 folderDIR。
获得最高 X 值的输出 returns this:
Test:System.Linq.Enumerable+<TakeIterator>d__3a`1[Importer.versionFolder]
如有任何帮助,我们将不胜感激。
编辑:我认为可能值得注意的是我必须使用 .NET 3.5
Take()
方法return的类型是IEnumerable
,如果想得到return类型List<T>
,调用ToList()
方法即可.如果只想获取 foldDir
字段,则调用 Select
方法即可。
public IList<string> HighestVersion(int topCount)
{
List<VersionFolder> vfList = new List<VersionFolder>
{
new VersionFolder(1, "A"),
new VersionFolder(4, "B"),
new VersionFolder(3, "C")
};
vfList = vfList.OrderBy(v => v.Version).Take(topCount).ToList();
foreach (VersionFolder versionFolder in vfList)
{
Console.WriteLine(versionFolder.FolderDir);
}
//return folderDir only
return vfList.Select(v=>v.FolderDir).ToList();
}
我创建了一个自定义列表,其中包含完整的文件夹路径和相应的版本号。我将这两个值都存储在一个列表中。我希望他们获得最高的 X 版本及其存储在列表中的相应文件夹路径。我已经为此苦苦挣扎了一段时间,但现在是时候寻求帮助了。我目前得到的代码如下:
这是我的清单class:
class versionFolder
{
public int version { get; set; }
public string folderDIR { get; set; }
public versionFolder(int version, string folderDIR)
{
this.version = version;
this.folderDIR = folderDIR;
}
}
这是我创建列表并向其中添加项目的代码。在底部我想打印出列表的内容(版本和所述版本的文件夹路径)然后在底部我想获得由深度变量设置的最高 X 版本。
public highestVersion(string dsPath, int depth)
{
int num = depth;
List<versionFolder> allVersions = new List<versionFolder>(); //list to hold all version numbers and full path
string folder = dsPath;
string[] versionDIRS = Directory.GetDirectories(folder);
foreach (string folderr in versionDIRS)
{
string[] fullpath = folderr.Split('\');
string folderName = fullpath[fullpath.Length - 1]; //returns VXX-XXXXXXXX (version folder name)
string vString = "6"; //sets a version number, this is actually data extrapolated from the folder path
allVersions.Add(new versionFolder(Convert.ToInt32(vString), fullpath.ToString()));
}
foreach (var version in allVersions)
{
Console.WriteLine("Amount is {0}", version.version);
Console.WriteLine("Amount is {0}", folderDIR.folderDIR);
}
var testtt = allVersions.OrderByDescending(n => n.version).Take(Convert.ToInt32(num));
Console.Write("Test:" + testtt);
}
版本号的输出没问题,但我无法获取 folderDIR。 获得最高 X 值的输出 returns this:
Test:System.Linq.Enumerable+<TakeIterator>d__3a`1[Importer.versionFolder]
如有任何帮助,我们将不胜感激。
编辑:我认为可能值得注意的是我必须使用 .NET 3.5
Take()
方法return的类型是IEnumerable
,如果想得到return类型List<T>
,调用ToList()
方法即可.如果只想获取 foldDir
字段,则调用 Select
方法即可。
public IList<string> HighestVersion(int topCount)
{
List<VersionFolder> vfList = new List<VersionFolder>
{
new VersionFolder(1, "A"),
new VersionFolder(4, "B"),
new VersionFolder(3, "C")
};
vfList = vfList.OrderBy(v => v.Version).Take(topCount).ToList();
foreach (VersionFolder versionFolder in vfList)
{
Console.WriteLine(versionFolder.FolderDir);
}
//return folderDir only
return vfList.Select(v=>v.FolderDir).ToList();
}