C#如何在List集合中查找值

JL.*_*JL. 0 c#

我有一个列表,此列表包含以下类的集合

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)