我有一个列表,此列表包含以下类的集合
public class MyFile
{
public string FileName
{
get;
set;
}
public int Position
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,列表定义将如下所示:
private List<MyFile> MyFiles = new List<MyFile>();
Run Code Online (Sandbox Code Playgroud)
我也可以使用以下方法搜索集合:
MyFile tmpFile = MyFiles.Find(delegate(MyFile item)
{ return item.FileName == fileName; });
Run Code Online (Sandbox Code Playgroud)
到目前为止看起来不错,除了我想要做的是返回MyFile,它不仅匹配文件名,而且在字段pos中也具有最高值.
因此,如果列表中存在以下项目:
myDocument.doc|1
myDocument.doc|2
myDocument.doc|3
myPDF.pdf|1
myPDF.pdf|2
myPDF.pdf|3
Run Code Online (Sandbox Code Playgroud)
并且我的find方法中的fileName ="myDocument.doc"的值,然后我仍然缺少返回myDocument.doc | 3这个项目的逻辑,因为它具有最高的pos值.
在SQL中,我的查询将是
select top 1 * from MyFiles
where fileName = 'myDocument.doc'
order by position desc;
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Mar*_*arz 10
你能用Linq吗?如果是这样,这样的简单查询应该:
MyFile file = MyFiles.Where(f => f.FileName == fileName).OrderByDescending(f => f.Position).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)