c# - Linq - 如何在列表的最大元素上应用 where 子句

标签 c# linq linq-to-nhibernate

  • 我有一个“人”的列表
  • 每个人都有一个“类别”列表
  • 类别有两个属性:日期和值

我想选择一个人员列表,其中最后一个类别等于“B”。但我不知道如何用 Linq 语法编写“where 子句”。

我的“人”结构是:

<person>
    <id>200</id>
    <name>Peter</name>
    <age>25</age>
    <categories>
        <category>
            <date>2012-05-01<date>
            <value>A</value>
        </category>
        <category>
            <date>2013-01-01<date>
            <value>B</value>
        </category>
        <category>
            <date>2013-02-01<date>
            <value>C</value>
        </category>
    </categories>
</person>

最佳答案

您可以使用以下内容:

List<Person> allPersons = GetListOfPersons();

List<Person> selectedPersons = allPersons
    .Where((x) => x.Categories
                   .OrderBy(y => y.Date)
                   .Last()
                   .Value == "B")
    .ToList();

或查询样式

List<Person> selectedPersons = (from person in allPersons
                                where person.Categories.OrderBy(x => x.Date).Last().Value == "B"
                                select person).ToList();

关于c# - Linq - 如何在列表的最大元素上应用 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165503/

相关文章:

performance - NHibernate 条件查询与 LINQ to NHibernate

c# - 如何查找列表的元素是否在另一个列表中?

c# - 在字符串列表中查找公共(public)字符串

c# - LINQ:如何向 LINQ 查询添加多个变量?

c# - 超出范围时给出错误消息

sql - SQL vs LINQ性能

c# - NHibernate/MySQL 字符串连接

NHibernate.QueryException : could not resolve property

c# - WPF:如何与非事件窗口交互?

c# - asp .net mvc 中带有 View 模型的多个路由参数